#include <iostream>
#include <vector>
#include <queue>
std::vector<int> relation[32001] = {};
int isParent[32001] = {};
int N = 0;
int M = 0;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
std::cin >> N >> M;
for (int i = 0; i < M; ++i)
{
int child = 0;
int parent = 0;
std::cin >> child >> parent;
relation[child].push_back(parent);
++isParent[parent];
}
std::queue<int> que = {};
for (int i = 1; i <= N; ++i)
{
if (!isParent[i])
{
que.push(i);
}
}
while (!que.empty())
{
int now = que.front();
que.pop();
std::cout << now << ' ';
for (int i = 0; i < relation[now].size(); ++i)
{
--isParent[relation[now][i]];
if (!isParent[relation[now][i]])
{
que.push(relation[now][i]);
}
}
}
return 0;
}
부모가 아닌 번호들은 먼저 입력합니다.
번호들의 부모의 관계를 하나씩 빼주고 그 번호가 0이 되었을 경우
자식 번호들이 이미 다 나왔기 때문에 부모가 아닌 자식으로 판단해서 큐에 다시 입력합니다.
'오늘의 알고리즘' 카테고리의 다른 글
| [C++] 백준 2473 세 용액 (0) | 2022.11.29 |
|---|---|
| [C++] 백준 2342 Dance Dance Revolution (0) | 2022.11.28 |
| [C++] 백준 2239 스도쿠 (0) | 2022.11.25 |
| [C++] 백준 2162 선분 그룹 (0) | 2022.11.25 |
| [C++] 백준 2143 두 배열의 합 (0) | 2022.11.24 |