P4779 【模板】单源最短路径(标准版)???
查看原帖
P4779 【模板】单源最短路径(标准版)???
1142243
impossible666楼主2023/10/15 15:06

P4779 【模板】单源最短路径(标准版)

#include<bits/stdc++.h>
using namespace std;
int n,m,st;
struct edge{
    int next,w;
};
vector<edge> g[100005];
struct node{
    int x;
    int d;
    bool operator > (const node &b)const{
        return d>b.d;
    }
};
priority_queue<node,vector<node>,greater<node> > q;
int dis[500005];
void dijsktra(int st){
    q=priority_queue<node,vector<node>,greater<node> >();
    dis[st]=0;
    q.push((node){st,0});
    while(!q.empty()){
        node tmp=q.top();q.pop();
        int u=tmp.x;
        if(tmp.d<dis[u]) continue;
        for(int i=0;i<g[u].size();i++){
            edge e=g[u][i];
            if(dis[e.next]>dis[u]+e.w){
                dis[e.next]=dis[u]+e.w;
                q.push((node){e.next,dis[e.next]});
            }
        }
    }
}
int main(){
    memset(dis,0x3f,sizeof dis);
    cin>>n>>m>>st;
    for(int i=1;i<=m;i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        g[u].push_back((edge){v,w});
    }
    dijsktra(st);
    for(int i=1;i<=n;i++){
        printf("%d ",dis[i]);
    }
    return 0;
}

???蒟蒻求助
help!
help!
help!
2023/10/15 15:06
加载中...