1 条题解
-
0
SPFA
#include<bits/stdc++.h> using namespace std; void read(int &h){ char o; int x=0,y=1; o=getchar_unlocked(); while(!(o<='9'&&o>='0')){ if(o=='-'){ y=-1; } o=getchar_unlocked(); } while(o<='9'&&o>='0'){ x*=10; x+=o-'0'; o=getchar_unlocked(); } h=x*y; return ; } const int N=5e5+10; int n,m,s,u,v,w; vector<int> g[N],dis[N]; queue<int> q; bool vis[N]; int len[N]; void start(){ for(int i=1;i<=n;i++){ len[i]=INT_MAX; } len[s]=0; vis[s]=1; q.push(s); return ; } int main(){ ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr); read(n);read(m);read(s); start(); for(int i=1;i<=m;i++){ read(u);read(v);read(w); g[u].push_back(v); dis[u].push_back(w); } while(!q.empty()){ int x=q.front(); q.pop(); vis[x]=0; for(int i=0;i<g[x].size();i++){ int now=g[x][i]; if(len[now]>len[x]+dis[x][i]){ if(!vis[now]){ q.push(now); vis[now]=true; } len[g[x][i]]=len[x]+dis[x][i]; } } } for(int i=1;i<=n;i++){ if(len[i]!=INT_MAX){ cout<<len[i]; } else{ cout<<2147483647; } cout<<" "; } return 0; }
- 1
信息
- ID
- 7401
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 220
- 已通过
- 41
- 上传者