讨论 / 此程序有一个小BUG,但还是过了
华月 2014-05-06 06:09:46
点我顶贴 收藏 删除
#include<cstdio>

#include<cstring>

using namespace std;

int n,m,a,b,t,ans=100000000;

int ti[300][300]={0},f[300][300]={0};

int main()

{

scanf("%d%d",&n,&m);

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

{

if(i==j)f[i][j]=0;

else f[i][j]=100000000;

}

for(int i=1;i<=m;i++)

{

scanf("%d%d%d",&a,&b,&t);

ti[a][b]=ti[b][a]=t;

f[a][b]=f[b][a]=t;

}

for(int k=1;k<=n;k++)

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

{

if(f[i][k]+f[k][j]<f[i][j])f[i][j]=f[i][k]+f[k][j];

}

for(int k=1;k<=n;k++)

for(int i=1;i<=n;i++)

if(k!=i)

{

for(int j=1;j<=n;j++)

{

if(j==i||j==k)continue;

if(ti[i][k]&&ti[i][j]&&f[k][j]!=ti[k][i]+ti[i][j]&&f[k][j]+ti[i][j]+ti[i][k]<ans)ans=f[k][j]+ti[i][j]+ti[i][k];

}

}

if(ans==100000000)printf("He will never come back.");

else printf("%d",ans);

return 0;

}

当然,这个BUG在超过99.9%的情况下都不成立。。。。

哈哈哈哈哈哈哈哈。。。。。

查看更多回复
提交回复