Cow Contest S
了解了Floyd的第二个用处,判断两点是否连通
#includeusing namespace std; const int MAX=105,INF=0x3F3F3F3F; bool g[MAX][MAX]; int n,e,ans; void floyd() { for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) g[i][j]=g[i][j]||(g[i][k]&&g[k][j]); } int main() { cin>>n>>e; ans=n; for (int i=1;i<=e;i++) { int x,y; cin>>x>>y; g[x][y]=true; } for (int i=1;i<=n;i++) g[i][i]=true; floyd(); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (!g[i][j]&&!g[j][i]) { ans--; break; } cout<


![[USACO08JAN]Cow Contest S Floyd [USACO08JAN]Cow Contest S Floyd](http://www.mshxw.com/aiimages/31/715281.png)
