讨论 / 神犇能解答一下吗
chen2000 2016-02-29 18:36:40
点我顶贴 收藏 删除
#include <cstdio>

#include <iostream>

#include <cstring>

using namespace std;

int n,m,a[251][251],d[251][251],ans,x,y;

int main()

{

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

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

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

{

a[i][j]=20000000;

d[i][j]=20000000;

}

ans=20000000;

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

{

scanf("%d%d",&x,&y);

scanf("%d",&d[x][y]);

d[y][x]=d[x][y];

a[x][y]=d[x][y];

a[y][x]=d[x][y];

}

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

{

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

for (int j=i+1;j<k;j++)

{

if (ans>a[i][j]+d[i][k]+d[k][j]) ans=a[i][j]+d[i][k]+d[k][j];

}

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

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

{

if(a[i][k]+a[k][j]<a[i][j])

a[i][j]=a[i][k]+a[k][j];

}

}

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

else printf("%d",ans);

}

ac100

#include <cstdio>

#include <iostream>

#include <cstring>

using namespace std;

int n,m,a[251][251],d[251][251],ans,x,y;

int main()

{

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

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

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

{

a[i][j]=20000000;

d[i][j]=20000000;

}

ans=20000000;

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

{

scanf("%d%d",&x,&y);

scanf("%d",&d[x][y]);

d[y][x]=d[x][y];

a[x][y]=d[x][y];

a[y][x]=d[x][y];

}

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

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

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

{

if(a[i][k]+a[k][j]<a[i][j])

a[i][j]=a[i][k]+a[k][j];

}

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

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

for (int j=i+1;j<k;j++)

{

if (ans>a[i][j]+d[i][k]+d[k][j]) ans=a[i][j]+d[i][k]+d[k][j];

}

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

else printf("%d",ans);

}

wa30

请问为什么

#1 12345671c@2016-02-29 23:17:43
回复 删除
沙发沙发!!!

路过,因为我也没做出来。。。。。。。。

查看更多回复
提交回复