日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu 5521 Meeting(最短路)

發(fā)布時間:2024/8/26 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 5521 Meeting(最短路) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=5521

?

?


題意:有1-n共n個點,給出m個塊(完全圖),并知道塊內(nèi)各點之間互相到達(dá)花費(fèi)時間均為ti。已知兩人分別在點1和點n,求在哪些點相遇能使得花費(fèi)時間最短。


題解:顯然先想到從點1和點n分別求最短路,然后枚舉點找出哪些點是相遇花費(fèi)時間最少的。但是這題邊太多了,假設(shè)一個完全圖里有x個點,那邊就有x*(x-1)/2條了,必須化簡其邊。一個可行的辦法是給每個完全圖增加兩個點,分別為入點和出點,入點向其中的點連邊,其中的點再向出點連邊,權(quán)均為0,出點向入點連邊,權(quán)為ti,邊數(shù)就化簡為2*x了。

代碼實現(xiàn):
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const ll INF = 1e18; 5 const int N = 2100010; 6 const int M = 2100010; 7 struct edge { 8 int to; 9 ll cost; 10 edge(int _to, ll _cost):to(_to),cost(_cost){} 11 }; 12 typedef pair<ll, int> P;// first是最短距離,second是頂點的編號 13 int V; 14 vector<edge>G[N]; 15 ll d[2][N];//點1 和 點n 到達(dá)其他點的最短時間 16 void dij(int id, int s) { 17 priority_queue<P, vector<P>, greater<P> > que; 18 for(int i = 0; i <= V; ++i) d[id][i] = INF; 19 d[id][s] = 0; 20 que.push(P(0, s)); 21 22 while(!que.empty()) { 23 P p = que.top(); que.pop(); 24 int v = p.second; 25 if(d[id][v] < p.first) continue; 26 int num = G[v].size(); 27 for(int i = 0; i < num; ++i) { 28 edge e = G[v][i]; 29 if(d[id][e.to] > d[id][v] + e.cost) { 30 d[id][e.to] = d[id][v] + e.cost; 31 que.push(P(d[id][e.to], e.to)); 32 } 33 } 34 } 35 } 36 int main() { 37 int k, T, t, n, m, i, s, x, u, v; 38 scanf("%d", &T); 39 for(k = 1; k <= T; ++k) { 40 for(i = 0; i < N; ++i) G[i].clear(); 41 scanf("%d%d", &n, &m);//點數(shù),集合(完全圖)數(shù)目 42 for(i = 1; i <= 2*m; i += 2) { 43 u = n+i;//入點 44 v = n+i+1;//出點 45 scanf("%d%d", &t, &s);//時間,集合中點數(shù) 46 while(s--) { 47 scanf("%d", &x); 48 G[u].push_back(edge(x, 0)); 49 G[x].push_back(edge(v, 0)); 50 } 51 G[v].push_back(edge(u, t)); 52 } 53 V = n+2*m; 54 dij(0, 1); 55 dij(1, n); 56 /* 57 puts("-----------------"); 58 for(i = 1; i <= n; ++i) { 59 printf("%lld, %lld\n", d[0][i], d[1][i]); 60 } 61 puts("-----------------"); 62 */ 63 ll mi = INF; 64 int cnt = 0; 65 ll a = 0; 66 for(i = 1; i <= n; ++i) { 67 if((a = max(d[0][i], d[1][i])) < mi) { 68 mi = a; 69 } 70 } 71 printf("Case #%d: ", k); 72 if(mi == INF) { 73 printf("Evil John\n"); 74 } 75 else { 76 int f = 0; 77 printf("%lld\n", mi); 78 for(i = 1; i <= n; ++i) { 79 a = max(d[0][i], d[1][i]); 80 if(a == mi) { 81 if(f) putchar(' '); 82 printf("%d", i); 83 f = 1; 84 } 85 } 86 puts(""); 87 } 88 } 89 return 0; 90 } 2667ms

?

轉(zhuǎn)載于:https://www.cnblogs.com/GraceSkyer/p/8723943.html

總結(jié)

以上是生活随笔為你收集整理的hdu 5521 Meeting(最短路)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三级小视频 | 国产一区二区三区免费观看 | 国产美女视频免费观看下载软件 | 天堂久久av | 欧美夜夜操| 日本a∨视频 | 国产精品视频99 | 国产一级影院 | 蜜臀av88 | 嫩草视频在线播放 | 亚洲一区二区三区四区五区xx | www成年人| 国产精品毛片久久久久久久av | 亚洲婷婷丁香 | 无码人妻h动漫 | 久久久久91 | 国产老女人乱淫免费 | 手机看片日韩 | 两女双腿交缠激烈磨豆腐 | 免费看黄色的视频 | 亚洲激情成人 | 色图av| 亚洲AV无码乱码国产精品色欲 | 欧美在线视频一区二区 | 超污网站在线观看 | 国产处女 | 欧美大片高清免费观看 | 亚洲精品中文字幕在线观看 | www.国产视频 | 欧美在线色图 | 无码人妻aⅴ一区二区三区日本 | 日韩精品人妻一区二区中文字幕 | 庆余年三 | 污网站在线免费看 | 亚洲色图丝袜美腿 | 99热伊人 | 国产精品久久久久久久久久久免费看 | 欧美熟妇乱码在线一区 | 伊人网免费视频 | 一级片亚洲 | 三级黄网 | 五月天久久综合 | 夜夜操网 | 成品短视频泡芙 | 免费av在线网站 | 久久99精品视频 | 国产自偷自拍视频 | 黄色免费在线观看网站 | 欧美日韩中 | 亚洲女同av | 欧美另类69| 午夜亚洲aⅴ无码高潮片苍井空 | 天堂av8| 久久综合资源 | 911av| 亚洲 欧美 日韩 在线 | 国产精品视频亚洲 | 少妇高潮一区二区三区99欧美 | 高潮流白浆在线观看 | 日日色综合 | 一区二区三区四区五区av | 久久久久久av无码免费网站 | 青青视频一区二区 | 国产高清二区 | 亚洲aa| 免费日本黄色 | 人人舔人人干 | 国产小视频在线观看 | 亚洲欧美综合精品久久成人 | 国产欧美一区二区精品忘忧草 | 中文字幕在线观看av | 国产精品久久久久久久久免费看 | 亚洲视频中文字幕在线观看 | 国产视频手机在线 | 亚洲成人av一区 | av国产免费| 天天干天天要 | 波多野结衣不卡 | 91国自产精品中文字幕亚洲 | 亚洲国产精品成人 | 欧美xxxx喷水 | 欧美日韩aa | 中文人妻av久久人妻18 | 黄色在线免费观看视频 | 精品一区二区免费视频 | 依人久久 | 欧美放荡办公室videos4k | 久久中文字幕av | 在线欧美亚洲 | 久久奇米 | 久久精品中文 | 日本人性爱视频 | 久草新| 国产农村妇女精品一区二区 | 成人av一级 | 性生活视频网站 | 亚洲天天 | 欧日韩一区二区三区 | 国产精品第56页 |