티스토리 뷰

Algorithm/BOJ

2458 키 순서

henry1214 2018. 9. 12. 09:31

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
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday