| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
超时,大家帮忙!我实在想不出其他方法了#define maxn 2001
#include<stdio.h>
#include<string.h>
int n,f[maxn][maxn],p[maxn][maxn],use[maxn];
int task()
{int k,i,j;
for (k=1;k<=n;k++)
if (use[k]==1)
for (i=1;i<=n;i++)
if (i!=k&&f[i][k]==1)
for (j=1;j<=n;j++)
if (i!=j&&j!=k&&f[k][j]==1)
{f[i][j]=2;f[j][i]=2;
if (p[i][j]==1&&p[j][i]==1) return(1);
}
return(0);
}
void main()
{ int x,y,q,m,i1,j1;
scanf("%d",&q);
for(i1=1;i1<=q;i1++)
{ scanf("%d %d",&n,&m);
memset(f,0,sizeof(f));memset(p,0,sizeof(p));
for (j1=1;j1<=m;j1++)
{
scanf("%d %d",&x,&y);
p[x][y]=1;p[y][x]=1;
use[x]=1;use[y]=1;
}
memcpy(f,p,sizeof(p));
printf("Scenario #%d:\n",i1);
if(task()==1) printf("Suspicious bugs found!\n");
else printf("No suspicious bugs found!\n");
}
}
我用了个类似传递闭包的算法
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator