这程序哪错了啊?????!!!!

#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 条评论

  • @ 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

信息

ID
1046
难度
6
分类
图结构 | 最短路 点击显示
标签
(无)
递交数
4756
已通过
1265
通过率
27%
被复制
11
上传者