1 条题解
-
0
#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
- 上传者