티스토리 뷰
https://www.acmicpc.net/problem/2458
먼저 플로이드를 돌려서 모든 정점 사이의 거리를 구한다. 그리고 정점 i에서 다른 정점 j에 대해서 하나라도 d[i][j], d[j][i] 모두 알 수 없다면 자신의 키 순서를 정확히 알 수 없다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <cstdio> #define INF 987654321 int n,m,a,b,i,j,k,ans,d[501][501]; int main() { scanf("%d %d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=n;j++) d[i][j]=i==j?0:INF; while(m--) scanf("%d %d",&a,&b),d[a][b]=1; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(d[i][j]>d[i][k]+d[k][j]) d[i][j]=d[i][k]+d[k][j]; for(i=1;i<=n;i++) { int f=1; for(j=1;j<=n;j++) { if(d[i][j]==INF && d[j][i]==INF) { f=0; break; } } if(f) ans++; } printf("%d\n",ans); return 0; } | cs |
'Algorithm > BOJ' 카테고리의 다른 글
6135 Cow Hurdles (0) | 2018.09.12 |
---|---|
11562 백양로 브레이크 (0) | 2018.09.12 |
15683 감시 (0) | 2018.09.11 |
3474 교수가 된 현우 (0) | 2018.09.06 |
3176 도로 네트워크 (0) | 2018.09.05 |