hdu 1704 传递闭包

http://acm.hdu.edu.cn/showproblem.php?pid=1704

传递闭包。。。。

#include<stdio.h> #include<string> int a[510][510]; int main() { //freopen("a.txt","r",stdin); int t; while(scanf("%d",&t)!=EOF) { while(t--) { int n,m; scanf("%d%d",&n,&m); int i,j,k; memset(a,0,sizeof(a)); for(i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); a[x][y]=1; a[y][x]=-1; } for(i=1;i<=n;i++)//O(n^3)复杂度 for(j=1;j<=n;j++) { if(a[j][i]==1)//为什么改成a[i][j],下面改成a[j][k]就WA?因为i表示j到k,中间经过i结点 { for(k=1;k<=n;k++) { if(a[i][k]==1) { a[j][k]=1; a[k][j]=-1; } } } } int sum=0; for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) if(!a[i][j])//不确定关系的为0 sum++; printf("%d/n",sum); } } return 0; }

你可能感兴趣的:(hdu 1704 传递闭包)