http://acm.hdu.edu.cn/showproblem.php?pid=1704
傳遞閉包。。。。
#include<stdio.h><br />#include<string><br />int a[510][510];<br />int main()<br />{<br />//freopen("a.txt","r",stdin);<br />int t;<br />while(scanf("%d",&t)!=EOF)<br />{<br />while(t--)<br />{<br />int n,m;<br />scanf("%d%d",&n,&m);<br />int i,j,k;<br />memset(a,0,sizeof(a));<br />for(i=1;i<=m;i++)<br />{<br />int x,y;<br />scanf("%d%d",&x,&y);<br />a[x][y]=1;<br />a[y][x]=-1;<br />}<br />for(i=1;i<=n;i++)//O(n^3)複雜度<br />for(j=1;j<=n;j++)<br />{<br />if(a[j][i]==1)//為什麼改成a[i][j],下面改成a[j][k]就WA?因為i表示j到k,中間經過i結點<br />{<br />for(k=1;k<=n;k++)<br />{<br />if(a[i][k]==1)<br />{<br />a[j][k]=1;<br />a[k][j]=-1;<br />}<br />}<br />}<br />}<br />int sum=0;<br />for(i=1;i<=n-1;i++)<br />for(j=i+1;j<=n;j++)<br />if(!a[i][j])//不確定關係的為0<br />sum++;<br />printf("%d/n",sum);<br />}<br />}<br />return 0;<br />}