https://www.acmicpc.net/problem/14567
[난이도] Gold5
[유형] 위상정렬
[풀이]
위상정렬
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
int N,M,ans[1001],inDegree[1001];
vector<int> adj[1001];
int main(){
scanf("%d%d",&N,&M);
while(M--){
int u,v;
scanf("%d%d",&u,&v);
adj[u].push_back(v);
inDegree[v]++;
}
queue<int> q;
for(int i=1;i<=N;i++) {
if(!inDegree[i]) {
q.push(i);
ans[i]=1;
}
}
int cur=2;
while(!q.empty()){
int sz=q.size();
while(sz--){
int qf = q.front();
q.pop();
for(auto nxt : adj[qf]){
if(--inDegree[nxt]==0){
q.push(nxt);
ans[nxt]=cur;
}
}
}
cur++;
}
for(int i=1;i<=N;i++) printf("%d ",ans[i]);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold5/14567.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold5] 4781 : 사탕 가게 (C++) (0) | 2022.02.12 |
---|---|
[BOJ/백준][Gold5] 1451 : 직사각형으로 나누기 (C++) (0) | 2022.02.12 |
[BOJ/백준][Gold5] 13164 : 행복 유치원 (C++) (0) | 2022.02.12 |
[BOJ/백준][Gold5] 15971 : 두 로봇 (C++) (0) | 2022.01.23 |
[BOJ/백준][Gold5] 7490 : 0 만들기 (C++) (0) | 2022.01.23 |