1 条题解

  • 0
    @ 2024-6-9 13:29:21
    #include<bits/stdc++.h>
    #define ll long long
    #define mod 1000000007
    using namespace std;
    const int N=100005,M=200005;
    int n,m,k,s,t,d[N],f[N],tot;
    vector<pair<ll,int>> e[N]; 
    void dijkstra(int S){
    	memset(d,0x3f,sizeof(d));
    	d[S]=0;
    	memset(f,0,sizeof(f));
    	priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>> q;
    	q.push({0,S});
    	while (!q.empty()){
    		int u=q.top().second;
    		q.pop();
    		if (f[u]) continue;
    		f[u]=1;
    		for (auto [v,w]:e[u]){
    			if (d[v]>d[u]+w){
    				d[v]=d[u]+w;
    				q.push({d[v],v});
    			}
    		}
    	}
    }
    int main(){
    	int S;
    	cin>>n>>m>>S;
    	for (int i=1;i<=m;++i){
    		cin>>s>>t>>k;
    		e[s].push_back({t,k});
    	}
    	dijkstra(S);
    	for (int i=1;i<=n;++i)
    		cout<<d[i]<<' ';
    }
    
    • 1

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

    信息

    ID
    801
    时间
    1000ms
    内存
    125MiB
    难度
    10
    标签
    递交数
    4
    已通过
    4
    上传者