티스토리 뷰

PS/PS 일반

[백준] 2623번 - 음악프로그램

푸르른강물을먹이를찾아어슬렁거리는연어처럼 2021. 1. 19. 22:59

음악프로그램(백준, 2623번)

풀이

#pragma warning(disable:4996)
#include<iostream>
#include<vector>
#include<math.h>
#include<algorithm>
#include <random>
#include<time.h>
#include<string>
#include<queue>
#include <set>
#include <map>
#include <list>
#include<stack>
#include<deque>
#include<cstring>
#define MAX 26
#define INF 987654321
using namespace std;


int n, k;
vector<int> res;
vector<vector<int>> graph;
vector<int> indegree;



int main(void) {

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n, m;
    cin >> n >> m;

    indegree = vector<int>(n + 1, 0);
    graph = vector<vector<int>>(n + 1);

    for (int subPd = 0; subPd < m; subPd++) {
        int T; cin >> T;
        vector<int> tmp(T);
        for (int idx = 0; idx < T; idx++) {
            cin >> tmp[idx];
        }

        for (int idx = 0; idx < T - 1; idx++) {
            int cur = tmp[idx];
            int next = tmp[idx + 1];
            graph[cur].push_back(next);
            indegree[next]++;
        }
    }
    queue<int> q;
    for (int i = 1; i <= n; i++) {
        if (!indegree[i]) {
            res.push_back(i);
            q.push(i);
        }
    }
    if (!q.size()) {
        cout << 0 << endl;
        exit(0);
    }

    while (!q.empty()) {
        int cur = q.front(); q.pop();

        for (int nxt = 0; nxt < graph[cur].size(); nxt++) {
            int next = graph[cur][nxt];
            indegree[next]--;
            if (indegree[next] < 0) {
                cout << 0 << endl;
                exit(0);
            }
            if (!indegree[next]) {
                res.push_back(next);
                q.push(next);
            }
        }
    }
    if (res.size() < n) {
        cout << 0 << endl;
        exit(0);
    }

    for (int i = 0; i < res.size(); i++) {
        cout << res[i] << endl;
    }
    return 0;
}
  • 바보같이 출력 형식을 안읽고 풀어서, 왜 틀렸지.... 하고 오랫동안 고민함...
  • 0이 나오는 case는 크게 두가지가 있다. 잘 하면 합칠 수 있겠으나 내 여가시간에 여백이 모자라서 적지 않음.

'PS > PS 일반' 카테고리의 다른 글

[백준] 2150번 - Strongly Connected Component  (0) 2021.01.24
[백준] 1005번 - ACM Craft  (0) 2021.01.19
[백준] 2252번: 줄 세우기  (0) 2021.01.17
[백준] 1103 게임  (0) 2021.01.06
2638번 치즈  (0) 2021.01.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함