풀이
a와 b의 대소관계를 알 수 있다는 것은
a에서 b까지 알고 있는 관계를 건너건너 도착할 수 있다는 것이고
n 제한이 100으로 엄청 작으므로 모든 경로를 구해놓자.
그리고 도달할 수 없는 노드의 개수를 세어주자.
코드
#include <stdio.h>
int n, m, a[101][101];
int main() {
scanf("%d %d", &n, &m);
for (int i = 0, x, y; i < m; i++)
scanf("%d %d", &x, &y), a[x][y] = 1;
for (int k = 1; k <= n; k++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (a[i][k] && a[k][j]) a[i][j] = 1;
for (int i = 1; i <= n; i++) {
int ans = -1;
for (int j = 1; j <= n; j++)
if (!a[i][j] && !a[j][i]) ans++;
printf("%d\n", ans);
}
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이