#문제 간단 정리
위상정렬
#문제 해결 방법
정석적인 위상정렬이기 때문에
위상정렬 코드를 구현하도록 하자
#전체 코드
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
for (int T = 1; T <= 10; T++) {
int V, E;
cin >> V >> E;
vector<vector<int>> graph(V + 1);
vector<int> indegree(V + 1, 0);
for (int i = 1; i <= E; i++) {
int u, v;
cin >> u >> v;
graph[u].push_back(v);
indegree[v]++;
}
queue<int> q;
cout << '#' << T << ' ';
for (int i = 1; i <= V; i++) {
if (indegree[i] == 0) {
cout << i << ' ';
q.push(i);
}
}
while (!q.empty()) {
int front = q.front();
q.pop();
for (auto nextNode : graph[front]) {
indegree[nextNode] --;
if (indegree[nextNode] == 0) {
cout << nextNode << ' ';
q.push(nextNode);
}
}
}
cout << '\n';
}
}
'[SW Expert Academy]' 카테고리의 다른 글
SW Expert Academy 1224. [S/W 문제해결 기본] 6일차 - 계산기3[C++] (0) | 2024.04.17 |
---|---|
SW Expert Academy 1219. [S/W 문제해결 기본] 4일차 - 길찾기[C++] (0) | 2024.04.06 |
SW Expert Academy 1218.[S/W 문제해결 기본] 4일차 - 괄호 짝짓기[C++] (0) | 2024.04.05 |
SW Expert Academy [S/W 문제해결 기본] 3일차 - 최적 경로 [C++] (0) | 2024.04.03 |
SW Expert Academy [S/W 문제해결 기본] 1일차 - View [C++] (0) | 2024.03.17 |