POJ--3268 Silver Cow Party(最短路)
Posted dyloder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ--3268 Silver Cow Party(最短路)相关的知识,希望对你有一定的参考价值。
题目电波:POJ--3268 Silver Cow Party
跑两遍 dijkstra 就好了 弱智题
#include<iostream> #include<stdio.h> #include<algorithm> #include<queue> #include<cstring> using namespace std; #define maxn 10001 #define inf 0x3f3f3f #define pii pair<int,int> struct ac{ int to,va; ac(){} ac(int a,int b){ to=a,va=b; } }; vector<ac>q[maxn],w[maxn]; int dis[maxn],dist[maxn]; bool fa[maxn]; void dijkstra(int s){ memset(fa,0,sizeof(fa)); memset(dis,inf,sizeof(dis)); priority_queue<pii,vector<pii>,greater<pii> >pq; dis[s]=0; pq.push(pii(dis[s],s)); while(!pq.empty()){ int u=pq.top().second; pq.pop(); // cout<<"1"<<endl; if(fa[u]) continue; fa[u]=1; for(int j=0;j<q[u].size();j++){ ac x=q[u][j]; int v=x.to,va=x.va; if(dis[v]>dis[u]+va){ dis[v]=dis[u]+va; pq.push(pii(dis[v],v)); } } } } void dijkstra1(int s){ memset(fa,0,sizeof(fa)); memset(dist,inf,sizeof(dist)); priority_queue<pii,vector<pii>,greater<pii> >pq; dist[s]=0; pq.push(pii(dist[s],s)); while(!pq.empty()){ //cout<<"2"<<endl; int u=pq.top().second; pq.pop(); if(fa[u]) continue; fa[u]=1; for(int j=0;j<w[u].size();j++){ ac x=w[u][j]; int v=x.to,va=x.va; if(dist[v]>dist[u]+va){ dist[v]=dist[u]+va; pq.push(pii(dist[v],v)); } } } } int main(){ int n,m,s; cin>>n>>m>>s; for(int j=0;j<m;j++){ int u,v,va; scanf("%d%d%d",&u,&v,&va); q[u].push_back(ac(v,va)); w[v].push_back(ac(u,va)); } dijkstra(s); dijkstra1(s); int ans=0; for(int j=1;j<=n;j++){ if(j==s) continue; ans=max(dis[j]+dist[j],ans); //cout<<dis[j]<<" "<<dist[j]<<endl; } cout<<ans<<endl; }
以上是关于POJ--3268 Silver Cow Party(最短路)的主要内容,如果未能解决你的问题,请参考以下文章
POJ3268 Silver Cow Party —— 最短路