728x90
반응형
https://www.acmicpc.net/problem/1766
1766번: 문제집
첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주
www.acmicpc.net
#include <iostream>
#include <vector>
#include <queue>
#define MAX 32001
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, m, a, b, indegree[MAX];
vector<int> v[MAX];
priority_queue<int, vector<int>, greater<int>> q;
cin >> n >> m;
for(int i = 0; i < m; i++){
cin >> a >> b;
v[a].push_back(b);
indegree[b]++;
}
for(int i = 1; i <= n; i++){
if(indegree[i] == 0) q.push(i);
}
for(int i = 1; i <= n; i++){
int x = q.top();
q.pop();
cout << x << " ";
for(int j = 0; j < v[x].size(); j++){
int y = v[x][j];
if(--indegree[y] == 0) q.push(y);
}
}
return 0;
}
1766번과 비슷한 위상정렬 문제이다.
'가능하면 쉬운 문제부터 풀어야 한다'는 조건이 있기 때문에 우선순위 큐를 사용한다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 2623번 음악프로그램 (C++) (0) | 2021.12.24 |
---|---|
[BOJ] 11724번 연결 요소의 개수 (C++) (0) | 2021.12.24 |
[BOJ] 2252번 줄 세우기 (C++) (0) | 2021.12.23 |
[BOJ] 1822번 차집합 (C++) (0) | 2021.12.23 |
[BOJ] 5639번 이진 검색 트리 (C++) (0) | 2021.12.22 |