邻接数组写dijkstra为什么过不了,求助
查看原帖
邻接数组写dijkstra为什么过不了,求助
820387
haoguorui_python楼主2024/7/31 10:01

本人嫌链式前向星太麻烦,所以用邻接数组写的dijkstra,结果一个点都没过

代码如下:

#include <bits/stdc++.h>
using namespace std;
int g[2505][2505];
int n,m,s,t;
int d[2505];
bool vis[2505];
void dij(int s){
    memset(d,0x3f,sizeof(d));
    for (int i=1;i<=n;i++){
        int mind=0x3f3f3f3f;
        int v=0;
        for (int j=1;j<=n;j++){
            if (!vis[j] && d[j]<mind){
                mind=d[j];
                v=j;
            }
        }
        if (mind==0x3f3f3f3f){
            return;
        }
        vis[v]=true;
        for (int j=1;j<=n;j++){
            d[j]=min(d[j],d[v]+g[v][j]);
        }
    }
}
int main(){
    memset(g,0x3f,sizeof(g));
    cin>>n>>m>>s>>t;
    for (int i=1;i<=n;i++){
        g[i][i]=0;
    }
    for (int i=1;i<=m;i++){
        int u,v,w;
        cin>>u>>v>>w;
        g[u][v]=g[v][u]=w;
    }
    dij(s);
    cout<<d[t];
    return 0;
}
2024/7/31 10:01
加载中...