洛谷P1821 [USACO07FEB]Silver Cow Party S
2020-07-20 04:20
1271 查看
反向建边,参照我的博客食用更佳
code:
[code]#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; const int N=1e7; int cnt,n,m,x; int head ,rhead ,dis ,rdis ,vis ,sum ; struct Edge{ int to,next,dist; }e ; struct node{ int u,dist; node(int u,int dist):u(u),dist(dist){} bool operator < (const node&rhs) const{ return dist>rhs.dist; } }; void addEdge(int u,int v,int w){ e[++cnt].to=v; e[cnt].dist=w; e[cnt].next=head[u]; head[u]=cnt; //反向建边 e[++cnt].to=u; e[cnt].dist=w; e[cnt].next=rhead[v]; rhead[v]=cnt; } void dijkstra(){ for(int i=1;i<=n;i++){ dis[i]=1e9; } memset(vis,0,sizeof(vis)); priority_queue<node> q; q.push(node(x,0)); dis[x]=0; while(!q.empty()){ node t=q.top(); q.pop(); int u=t.u,dist=t.dist; if(vis[u]) continue; vis[u]=1; for(int i=head[u];i;i=e[i].next){ int v=e[i].to,w=e[i].dist; if(dis[v]>dis[u]+w){ dis[v]=dis[u]+w; q.push(node(v,dis[v])); } } } } void rdijkstra(){ for(int i=1;i<=n;i++){ rdis[i]=1e9; } memset(vis,0,sizeof(vis)); priority_queue<node> q; q.push(node(x,0)); rdis[x]=0; while(!q.empty()){ node t=q.top(); q.pop(); int u=t.u,dist=t.dist; if(vis[u]) continue; vis[u]=1; for(int i=rhead[u];i;i=e[i].next){ int v=e[i].to,w=e[i].dist; if(rdis[v]>rdis[u]+w){ rdis[v]=rdis[u]+w; q.push(node(v,rdis[v])); } } } } bool cmp(int x,int y){ return x>y; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>x; int u,v,w; for(int i=1;i<=m;i++){ cin>>u>>v>>w; addEdge(u,v,w); } dijkstra(); rdijkstra(); for(int i=1;i<=n;i++){ dis[i]+=rdis[i]; }sort(dis+1,dis+1+n,cmp); cout<<dis[1]<<endl; return 0; }
相关文章推荐
- Silver Cow Party 【双向最短路】
- kuangbin专题四 D题 Silver Cow Party(POJ3268)
- Silver Cow Party POJ - 3268 最短路
- POJ 3268 Silver Cow Party(Dijkstra算法求解来回最短路问题)
- poj 3268 Silver Cow Party dijkstra基础题!!!入门
- POJ 3268 Silver Cow Party (来回最短路 SPFA)
- POJ-3268-Silver Cow Party(SPFA 反向建图)
- Silver Cow Party
- POJ 3268 Silver Cow Party(SPFA)
- POJ - 3268 Silver Cow Party(spfa)
- 洛谷P1821 [USACO07FEB]银牛派对Silver Cow Party
- POJ 3268 Silver Cow Party(找最短路径的最大值+两次Dijkstra算法)
- Silver Cow Party POJ - 3268 (dijkstra)
- POJ 3268 Silver Cow Party(Dijkstra算法求解来回最短路问题)
- POJ 3268 Silver Cow Party(spfa)
- POJ 3268 Silver Cow Party
- POJ-3268 Silver Cow Party( 最短路 )
- POJ 3268 - Silver Cow Party(单源最短路)
- POJ 3268 Silver Cow Party (Dijkstra算法)
- poj3268~Silver Cow Party(dijkstra+路径反转)