지우너
[코드트리] 친구의 키2 C++ 본문
문제
코드
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int MAX_N = 100'000;
int n, m;
vector<int> edges[MAX_N+1];
int indegree[MAX_N+1]; // indegree[i]: i번 노드에 들어오는 간선의 개수
queue<int> q;
// in-degree 방법을 사용하여 위상정렬을 시도해본 뒤,
// queue에 들어간 노드의 수가 그래프에서 주어진 노드의 수와 일치하는지를 확인
int main() {
cin >> n >> m;
for(int i=0; i<m; ++i){
int a, b;
cin >> a >> b;
edges[a].push_back(b);
indegree[b]++;
}
// queue에 시작 노드 추가
for(int i=1; i<=n; ++i){
if(indegree[i]==0) q.push(i);
}
int numOfNode=0;
while(!q.empty()){
int node = q.front();
q.pop();
numOfNode++;
for(auto e: edges[node]){
indegree[e]--;
if(indegree[e]==0) q.push(e);
}
}
if(numOfNode==n) cout << "Consistent\n";
else cout << "Inconsistent\n";
return 0;
}
'Problem Solving' 카테고리의 다른 글
[SWEA] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 C++ (0) | 2024.11.13 |
---|---|
[코드트리] 크기 비교3 C++ (0) | 2024.11.11 |
[코드트리] 친구의 키 C++ (0) | 2024.11.08 |
[코드트리] 최소 스패닝 트리7 C++ (0) | 2024.11.07 |
[코드트리] 색칠된 정점에 연결하기 C++ (0) | 2024.11.04 |