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; }