[USACO07FEB]银牛派对Silver Cow Party---最短路模板题
生活随笔
收集整理的這篇文章主要介紹了
[USACO07FEB]银牛派对Silver Cow Party---最短路模板题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
銀牛排隊(duì)
對(duì)于我這種蒟蒻來說,還是不要跑一次單元最短路。跑兩次好寫呀(~ ̄▽ ̄)~
而題目中是有向圖。如果如果按照題意進(jìn)行最短路的話。就會(huì)出現(xiàn)一個(gè)單終點(diǎn)最短路和一個(gè)單起點(diǎn)最短路
對(duì)于單起點(diǎn)自然就是套模板,但對(duì)于單終點(diǎn)最短路怎么辦呢?
顯而易見的是,只有一個(gè)終點(diǎn)廢話呢你(/゚Д゚)/
這樣我們就可以反向存一次有向邊。將終點(diǎn)變?yōu)槠瘘c(diǎn),這樣的話就可以套模板了合著就是刷模板題呀(▼⊿▼)
#include<iostream> #include<cstdio> #include<queue> using namespace std; int head[1001][2]; struct node {int point;int next;int dist; }; node line[101000][2]; int tail; queue<int>q0; queue<int>q1; bool exist[1001][2]; int dis[1001][2]; void add(int x,int y,int val,int d) {line[++tail][d].point=y;line[tail][d].dist=val;line[tail][d].next=head[x][d];head[x][d]=tail; } int main() {int n,m,begin;scanf("%d%d%d",&n,&m,&begin);for(int i=1;i<=n;i++){head[i][0]=head[i][1]=-1;dis[i][0]=dis[i][1]=0x7fffffff;}int a,b,c;for(int i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);add(a,b,c,0);add(b,a,c,1);}int pass;q0.push(begin);dis[begin][0]=0;exist[begin][0]=true;while(!q0.empty()){pass=q0.front();q0.pop();exist[pass][0]=false;int need=head[pass][0];while(need!=-1){if(dis[line[need][0].point][0]>dis[pass][0]+line[need][0].dist){dis[line[need][0].point][0]=dis[pass][0]+line[need][0].dist;if(!exist[line[need][0].point][0])q0.push(line[need][0].point);}need=line[need][0].next;}}q1.push(begin);exist[begin][1]=true;dis[begin][1]=0;while(!q1.empty()){pass=q1.front();q1.pop();exist[pass][1]=false;int need=head[pass][1];while(need!=-1){if(dis[line[need][1].point][1]>dis[pass][1]+line[need][1].dist){dis[line[need][1].point][1]=dis[pass][1]+line[need][1].dist;if(!exist[line[need][1].point][1])q1.push(line[need][1].point);}need=line[need][1].next;}}int ans=-0x7fffff;for(int i=1;i<=n;i++)if(i!=begin)ans=max(ans,dis[i][0]+dis[i][1]);printf("%d",ans); }轉(zhuǎn)載于:https://www.cnblogs.com/Lance1ot/p/8509910.html
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的[USACO07FEB]银牛派对Silver Cow Party---最短路模板题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海全球“编程一小时”活动记
- 下一篇: 人工智能化发展已经到了哪一步?