请LODAO看一下这段Dijkstra代码为什么错
  • 板块灌水区
  • 楼主AlexandreLea
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/1/17 00:01
  • 上次更新2023/11/5 04:45:15
查看原帖
请LODAO看一下这段Dijkstra代码为什么错
322792
AlexandreLea楼主2021/1/17 00:01
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,m,s;
    int gph[101][101],dis[101],pre[101]={};
    bool isfw[101];
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    memset(gph,0x7f,sizeof(gph));
    memset(dis,0x7f,sizeof(dis));
    memset(isfw,0,sizeof(isfw));
    fin>>n>>m>>s;
    for(int i=1;i<=m;i++){
        int x,y,z;
        fin>>x>>y>>z;
        gph[x][y]=z;
    }
    dis[s]=pre[s]=0;
    for(int i=1;i<=n;i++){
        dis[i]=gph[s][i];
    }
    for(int i=1;i<=n;i++){
        int u,minr=2139062143;
        for(int j=1;j<=n;j++){
            if(dis[j]<minr && !isfw[j]){
                minr=dis[j];
                u=j;
            }
        }
        isfw[u]=true;
        for(int j=1;j<=n;j++){
            if(gph[u][j]!=2139062143) dis[j]=min(dis[j],dis[u]+gph[u][j]);
        }
    }
    for(int i=1;i<=n;i++){
        if(dis[i]!=2139062143) fout<<dis[i]<<" ";
        else fout<<"Infinity ";
    }
    return 0;
}
2021/1/17 00:01
加载中...