80分求助
查看原帖
80分求助
312214
imldj楼主2020/6/1 10:07

麻烦各位大佬帮我看看哪里错了,谢谢

#include<bits/stdc++.h>
using namespace std;
int n,m,ans=1e9+7;
int a[110][110],dp[110][110];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(i!=j) a[i][j]=dp[i][j]=1e9+7;
    for(int i=1;i<=m;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        a[x][y]=a[y][x]=dp[x][y]=dp[y][x]=z;
    }
     for(int k=1;k<=n;k++)
     {
        for(int i=1;i<k;i++)
            for(int j=i+1;j<k;j++)
                ans=min(ans,dp[i][j]+a[i][k]+a[k][j]);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]),dp[j][i]=dp[i][j];
    }
    if(ans==1e9+7) cout<<"No solution."<<endl;
    else cout<<ans<<endl;
    return 0;
}
2020/6/1 10:07
加载中...