본문 바로가기
Algorithm 💫/Problem Solving

[백준] 2252번: 줄 세우기 / C++

by 돼지고기맛있다 2021. 10. 3.
반응형

✏️ 문제 링크

https://www.acmicpc.net/problem/2252

 

2252번: 줄 세우기

첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의

www.acmicpc.net

 

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

 

✏️ 문제 코드

#include <bits/stdc++.h>

using namespace std;
#define MAX 32001
int entry[MAX];
vector<int> vec[MAX];
int main(){
    int N, M; cin>>N>>M;
    
    while(M--){
        int a, b; cin>>a>>b;
        vec[a].push_back(b);
        entry[b]++;
    }
    
    queue<int> q;
    for(int i=1; i<=N; i++){
        if(entry[i]==0)q.push(i);
    }
    
    while(!q.empty()){
        
        int t=q.front();
        q.pop();
        cout<<t<<" ";
        
        for(int i=0; i<vec[t].size(); i++){
            int nxt=vec[t][i]; 
            entry[nxt]--;
            if(entry[nxt]==0){

                q.push(nxt);
            }
        }
    }
    
    
    
    return 0;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

 

 

 

 

반응형

댓글