水题60ptsWA
查看原帖
水题60ptsWA
315205
Kniqht楼主2022/8/1 10:07

有没有大佬帮忙看看为什么错了,谢谢!

#include<bits/stdc++.h>
using namespace std;	
const int N=110;
int n,m,g[N][N],dist[N];
bool st[N];
int dijkstra(){
    memset(dist,0x3f,sizeof(dist));
    dist[1]=0;
    memset(st,0,sizeof(st));
    for(int i=1;i<=n;i++){
        int t=-1;
        for(int j=1;j<=n;j++)
            if(!st[j]&&(t==-1||dist[t]>dist[j]))
                t=j;
        st[t]=true;
        for(int j=1;j<=n;j++)
            dist[j]=min(dist[j],dist[t]+g[t][j]);
    }
    return dist[n];
}
int main(){
    cin>>n>>m;
    memset(g,0x3f,sizeof(g));
    while(m--){
        int x,y,z;
        cin>>x>>y>>z;
        g[x][y]=g[y][x]=z;
    }
    int ans,now=dijkstra();
    for(int i=1;i<=n;i++)
        for(int j=1;j<i;j++)
            if(g[i][j]!=0x3f3f3f3f){
                g[i][j]*=2;g[j][i]*=2;
                int tmp=dijkstra();
                ans=max(ans,tmp);
                g[i][j]/=2;g[j][i]/=2;
            }
    cout<<ans-now;
    return 0;
}


2022/8/1 10:07
加载中...