【最短路】洛谷 P3371 【模板】单源最短路径(弱化版)
2021-04-15 16:06:00
# ACM
题链
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include <bits/stdc++.h> using namespace std; #define MS 10009 #define ls rt<<1 #define rs rt<<1|1 #define LL long long #define MAXN 2147483647
int n,m; int st; struct node{ int to,val; }; vector<node > vc[MS]; int dis[MS]; bool v[MS];
void dijkstra(){ for(int i=1;i<=n;i++){ v[i] = 0; dis[i] = MAXN; } dis[st] = 0; while(!v[st]){ int minn = MAXN; v[st] = 1; for(auto &i:vc[st]){ if(!v[i.to] && dis[st]+i.val < dis[i.to]){ dis[i.to] = dis[st] + i.val; } } for(int i=1;i<=n;i++){ if(!v[i] && dis[i] < minn){ minn = dis[i]; st = i; } } } }
int main() { ios::sync_with_stdio(false); cin >> n >> m >> st; for(int i=1;i<=m;i++){ int u,v,w; cin >> u >> v >> w; vc[u].push_back({v,w}); } dijkstra(); for(int i=1;i<=n;i++){ cout << dis[i] << " "; } cout << "\n"; return 0; }
|
2021-04-15 16:06:00
# ACM