POJ3660-Cow Contest

http://poj.org/problem?id=3660

模板题

#include<stdio.h>
#include<string.h>
#define INF 0x7fffffff
#define N 110
int map[N][N],n,m;
void floyd()
{
    int i,j,k;
    for(k=1;k<=n;k++)
       for(i=1;i<=n;i++)
          for(j=1;j<=n;j++)
             if(map[i][k]!=INF&&map[k][j]!=INF&&map[i][j]>map[i][k]+map[k][j])
                map[i][j]=map[i][k]+map[k][j];
}
int main(void)
{
    int i,j,x,y,ans;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(i=1;i<=n;i++)
          for(j=1;j<=n;j++)
              map[i][j]=INF;
        while(m--)
        {
            scanf("%d%d",&x,&y);
            map[x][y]=1;
        }
        floyd();
        ans=0;
        for(i=1;i<=n;i++)
        {
            
            for(j=1;j<=n;j++)
               {
                   if(j==i)
                   continue;
                if(map[i][j]==INF&&map[j][i]==INF)
                {
                    ans++;
                    break;
                }
            }
        }
        printf("%d\n",n-ans);
    }
    return 0;
}
posted @ 2012-08-30 19:54  Yogurt Shen  阅读(136)  评论(0编辑  收藏  举报