본문 바로가기
Algorithm

(BOJ) 2252 풀이

by snwo 2022. 1. 19.
#include<bits/stdc++.h>

using namespace std;
queue<int> q;
int in_degree[32001];
vector<int> v[32001];
int main(){
    int N,M;
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> N >> M;
    for(int i=1;i<=M;i++){
        int a,b;
        cin >> a >> b;
        in_degree[b]++;
        v[a].push_back(b);
    }
    for(int i=1;i<=N;i++){
        if(in_degree[i]==0)q.push(i);
    }
    while(!q.empty()){
        int t=q.front();
        q.pop();
        cout << t << ' ';
        for(auto i: v[t]){
            if(--in_degree[i]==0){
                q.push(i);
            }
        }
    }
    
}

어제풀었던 1766과 비슷한 문제로,

두 사람의 키를 비교한 결과를 출력시켜주는데,

진입차수가 같은 것들 사이의 관계에는 주어진 조건이 없으니, 그냥 넣은순서대로 아무거나 출력하면 된다.