본문 바로가기
카테고리 없음

2623 음악 프로그램

by 시끄러인마 2019. 3. 9.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <vector>
#include <queue>
 
using namespace std;
 
int indegree[1100= { 0 };
vector<vector<int> > adj(1100);
queue<int> q;
queue<int> rst;
 
int main() {
    int n, m;
    scanf("%d %d"&n, &m);
    // indegree, 인접행렬 초기화
    for (int i = 0; i < m; i++) {
        int num;
        scanf("%d"&num);
 
        int in, out;
        scanf("%d"&in);
        for (int j = 0; j < num-1; j++) {
            scanf("%d"&out);
 
            indegree[out]++;
            adj[in].push_back(out);
            in = out;
        }
    }
    // 연산
    int start;
    for (int i = 1; i <= n; i++)
        if (indegree[i] == 0)
            q.push(i);
    
    while (q.empty() == false) {
        int x = q.front();
        rst.push(x);
        q.pop();
                
        for (int i = 0; i < adj[x].size(); i++) {                        
            indegree[adj[x][i]]--;
            if(indegree[adj[x][i]] == 0)
                q.push(adj[x][i]);
        }
    }
    int i;
    for (i = 1; i <= n; i++
        if (indegree[i] != 0)
            break;
    if (i != n + 1)
        printf("0");
    else
        while (rst.empty() == false) {
            printf("%d\n", rst.front());
            rst.pop();
        }    
}
cs