- 观光旅游
- 2018-03-23 20:34:17 @
#include<bits/stdc++.h>
using namespace std;
long long a[111][111],dis[111][111];
const int maxn=99999;
int m,n,x,y,z,ans;
long long min(long long v,long long u)
{
return u<v?u:v;
}
int main()
{
while(scanf("%ld%ld",&n,&m)!=EOF){
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++)
a[i][j]=maxn;
}
for (int i=1;i<=m;i++){
cin>>x>>y>>z;
a[x][y]=a[y][x]=z;
}
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++){
dis[i][j]=a[i][j];
}
ans=maxn;
for (int k=1;k<=n;k++)
{
for (int i=1;i<=k-1;i++)
for (int j=i+1;j<=k-1;j++)
ans=min(ans,dis[i][j]+a[i][k]+a[k][j]);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
if (ans==maxn) cout<<"No solution."<<endl; else
cout<<ans;
}
return 0;
}
哪位大佬告诉我错在那里、、
表示只能过一点
4 条评论
-
Van Dark Holme LV 5 @ 2018-07-20 16:05:56
不知道?
太水了 -
2018-07-20 16:04:05@
不知道
-
2018-07-20 16:01:02@
long long 型
scanf 输出时要用 lld,不是ld. -
2018-07-20 14:57:35@
for (int j=i+1;j<=k-1;j++) ans=min(ans,dis[i][j]+a[i][k]+a[k][j]);
改为
cpp
for (int i=1;i<=k-1;i++)
for (int j=1;j<=k-1;j++)
ans=min(ans,dis[i][j]+a[i][k]+a[k][j]);
- 1