bzoj 2200: [Usaco2011 Jan]道路和航线【spfa】
2018-06-27 22:35
253 查看
直接跑最短路就行了……还不用判负环
#include<iostream> #include<cstdio> #include<queue> using namespace std; const int N=25005,inf=1e9; int n,r,p,s,h ,cnt,dis ; bool v ; struct qwe { int ne,to,va; }e[N*8]; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f; } void add(int u,int v,int w) { cnt++; e[cnt].ne=h[u]; e[cnt].to=v; e[cnt].va=w; h[u]=cnt; } int main() { n=read(),r=read(),p=read(),s=read(); for(int i=1;i<=r;i++) { int x=read(),y=read(),z=read(); add(x,y,z),add(y,x,z); } for(int i=1;i<=p;i++) { int x=read(),y=read(),z=read(); add(x,y,z); } deque<int>q; for(int i=1;i<=n;i++) dis[i]=inf; dis[s]=0; v[s]=1; q.push_back(s); while(!q.empty()) { int u=q.front(); q.pop_front(); v[u]=0; for(int i=h[u];i;i=e[i].ne) if(dis[e[i].to]>dis[u]+e[i].va) { dis[e[i].to]=dis[u]+e[i].va; if(!v[e[i].to]) { v[e[i].to]=1; if(!q.empty()&&dis[e[i].to]<dis[q.front()]) q.push_front(e[i].to); else q.push_back(e[i].to); } } } for(int i=1;i<=n;i++) if(dis[i]==inf) puts("NO PATH"); else printf("%d\n",dis[i]); return 0; }
相关文章推荐
- 【BZOJ】2200: [Usaco2011 Jan]道路和航线
- bzoj2200 [Usaco2011 Jan]道路和航线 最短路
- BZOJ 2200 [Usaco2011 Jan]道路和航线
- 【BZOJ】【2200】【USACO 2011 Jan】道路和航线
- BZOJ2200: [Usaco2011 Jan]道路和航线
- bzoj 2200: [Usaco2011 Jan]道路和航线——拓扑+dijkstra
- [BZOJ2200][Usaco2011 Jan]道路和航线
- BZOJ 2200: [Usaco2011 Jan]道路和航线
- [Usaco2011 Jan]道路和航线
- [BZOJ1656][Usaco2006 Jan] The Grove 树木(spfa)
- bzoj 2199: [Usaco2011 Jan]奶牛议会
- 【bzoj1614】[Usaco2007 Jan]Telephone Lines架设电话线 二分+SPFA
- 【bzoj2199/Usaco2011 Jan】奶牛议会——2-sat
- BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)
- [BZOJ3887][Usaco2015 Jan]Grass Cownoisseur(tarjan+spfa)
- [BZOJ2199][Usaco2011 Jan][2-SAT]奶牛议会
- bzoj 3887: [Usaco2015 Jan]Grass Cownoisseur(spfa+tarjan)
- [BZOJ2199][Usaco2011 Jan]奶牛议会(2-SAT)
- BZOJ2199: [Usaco2011 Jan]奶牛议会
- BZOJ 2199: [Usaco2011 Jan]奶牛议会