순서는 상관없으므로 예시 출력이랑 일치 안해도 된다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define MAX 1001
vector<vector<int>> graph;
vector<int> res;
int degree[MAX];
int n, m;
#define FAST_IO() \
{\
ios::sync_with_stdio(false);\
cin.tie(NULL); \
cout.tie(NULL); \
}\
void BFS()
{
queue<int> q;
for (int i = 1; i <= n; i++)
{
if (degree[i] == 0)
q.push(i);
}
while (!q.empty())
{
int cur = q.front();
q.pop();
res.push_back(cur);
for (int i = 0; i < graph[cur].size(); i++)
{
int nxt = graph[cur][i];
if (--degree[nxt] == 0)
q.push(nxt);
}
}
}
int main()
{
FAST_IO();
graph.resize(MAX, vector<int>());
cin >> n >> m;
while (m--)
{
int cnt, cur;
cin >> cnt >> cur;
for (int i = 1; i < cnt; i++)
{
int nxt;
cin >> nxt;
graph[cur].push_back(nxt);
degree[nxt]++;
cur = nxt;
}
}
BFS();
// 사이클이 생겨 degree가 0일 경우
if (res.size() != n)
cout << 0;
else
{
for (int i = 0; i < res.size(); i++)
cout << res[i] << '\n';
}
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[골5] 1759 - 암호 만들기 (0) | 2023.10.25 |
---|---|
[골3] 2473 - 세 용액 (0) | 2023.10.23 |
[골4] 1647 - 도시 분할 계획 (0) | 2023.10.23 |
[실2] 2512 - 예산 (0) | 2023.10.20 |
[실3] 10158 - 개미 (0) | 2023.10.20 |