본문 바로가기

Algorithm/BAEKJOON

[BOJ] 2252번 줄 세우기 (C++)

728x90
반응형

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 <iostream>
#include <vector>
#include <queue>
#define MAX 32001
using namespace std;

int main() {
    ios::sync_with_stdio(false);
	cin.tie(NULL);
    
    int n, indegree[MAX];
    vector<int> a[MAX];
	int m, x, y;
	cin >> n >> m;
	
	for(int i = 0; i < m; i++){
		cin >> x >> y;
		a[x].push_back(y);
		indegree[y]++;
	}
	
	int result[MAX];
	queue<int> q;
	
	for(int i = 1; i <= n; i++){
		if(indegree[i] == 0) q.push(i);
	}
	
	for(int i = 1; i <= n; i++){
		int x = q.front();
		q.pop();
		result[i] = x;
		for(int i = 0; i < a[x].size(); i++){
			int y = a[x][i];
			if(--indegree[y] == 0){
				q.push(y);
			}
		}
	}
	
	for(int i = 1; i <= n; i++)
		cout << result[i] << " ";
    
	return 0;
}
728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 11724번 연결 요소의 개수 (C++)  (0) 2021.12.24
[BOJ] 1766번 문제집 (C++)  (0) 2021.12.24
[BOJ] 1822번 차집합 (C++)  (0) 2021.12.23
[BOJ] 5639번 이진 검색 트리 (C++)  (0) 2021.12.22
[BOJ] 1978번 소수 찾기 (C++)  (0) 2021.11.12