亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

POJ 2391 Ombrophobic Bovines

2019-11-14 12:07:46
字體:
來源:轉載
供稿:網友

POJ 2391 Ombrophobic Bovines

網絡流

傳送門:POJ


題意

F個牛棚,P條路。每個牛棚有初始牛數,能容納的最大牛數。 下雨了,牛要避雨。每個牛棚不能超過容納數上限。 牛棚之間有路,路上沒有通過牛的數目限制。 問牛走的最遠距離最小是多少。無解輸出-1。


思路

關于拆點%%%

這題根poj2112很像,同樣構圖,然后二分。但是有不同。

POJ 2112跟本題很相似,也是二分,但它就沒用拆點,本題就用了 為啥呢? 因為POJ2112上建的圖中是一個很明顯的二分圖,也就是左邊的點絕對不會跟左邊的點去連邊的。而本題中就不一樣了,任何點之間都可能有邊。 會出現這種情況,1->2->3,這是一條鏈,而1->2最短路為1,2->3為1,1->3為 2,此時如果我們限制最大距離為1的話,建的新圖中必然有1->2,2->3, 然后我們就發現問題了,新圖中1和3也會間接的連接起來,而我們顯然是不想這么讓它流的。 這就需要拆點了,對每個點x,拆成x’和x”,然后x’和x”之間有一條無限容量的邊,這樣的話,隨便多少牛路過這個點都是可以的。 如果i->j這條邊符合了距離限制,就加i’->j” 所有的邊加完后,建立源點,對所有的x’連邊,容量為已經有的牛,匯點的話,就用所有的j”連接匯點,容量就是能容納的牛的數量。 這樣一拆點,就發現之前的問題不復存在了,還是比如1->2->3這個例子,加的邊是1’->2”,2’->3” 不會有流從1流到3去,因為加的每條邊都流向了匯點

代碼

注意一下距離需要用longlong存

#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<vector>#include<cmath>#include<queue>using namespace std;const int MAXN=507;const int oo=0x3f3f3f3f;const long long int loo=4223372036854775807ll;typedef long long LL;struct Dinic{ struct Edge{ int from, to, cap, flow;//cap容量 flow流量 Edge(){} Edge(int u, int v, int c, int f){ from=u;to=v;cap=c;flow=f; } }; vector<Edge> edges;//順序的插入邊 vector<int> G[MAXN];//保存邊號 bool vis[MAXN];//BFS使用 int d[MAXN]; int cur[MAXN]; void init(int n) { memset(d, 0, sizeof(d)); for(int i=0;i<n;i++) G[i].clear(); edges.clear(); } void AddEdge(int from, int to, int cap) { edges.push_back(Edge(from, to, cap, 0)); edges.push_back(Edge(to, from, 0, 0));//單向邊第三個參數寫0,雙向邊寫cap int t_m=edges.size(); G[from].push_back(t_m-2); G[to].push_back(t_m-1); } bool BFS(int s, int t) { memset(vis, 0, sizeof(vis)); queue<int> Q; Q.push(s); d[s]=0; vis[s]=1; while(!Q.empty()) { int x=Q.front();Q.pop(); for(int i=0;i<G[x].size();i++) { Edge& e=edges[G[x][i]]; if(!vis[e.to]&&e.cap>e.flow)//殘量網絡 { vis[e.to]=1; d[e.to]=d[x]+1; Q.push(e.to); } } } return vis[t]; } int DFS(int x, int a, int s, int t) { if(x==t||a==0) return a; int flow=0, _f; for(int& i=cur[x];i<G[x].size();i++) { Edge& e=edges[G[x][i]]; if(d[x]+1==d[e.to]&&(_f=DFS(e.to, min(a, e.cap-e.flow), s, t))>0) { e.flow+=_f; edges[G[x][i]^1].flow-=_f; flow+=_f; a-=_f; if(a==0) break; } } return flow; } int Maxflow(int s, int t) { int flow=0; while(BFS(s, t)) { memset(cur, 0, sizeof(cur)); flow+=DFS(s, oo, s, t); } return flow; }};LL ddd[MAXN][MAXN];Dinic dinic;int main(){ int f, p; while(cin>>f>>p) { vector<int> cow1; vector<int> cow2; int should_flow=0; for(int i=1;i<=f;i++) { int t1, t2; scanf("%d%d", &t1, &t2); cow1.push_back(t1); cow2.push_back(t2); ddd[i][i]=0; should_flow+=t1; } memset(ddd, 0x3f, sizeof(ddd)); for(int i=0;i<p;i++) { LL t1, t2, t3; scanf("%lld%lld%lld", &t1, &t2, &t3); ddd[t2][t1]=ddd[t1][t2]=min(t3, ddd[t1][t2]); } for(int k=1;k<=f;k++) { for(int i=1;i<=f;i++) { for(int j=1;j<=f;j++) { if(i==j) continue; ddd[i][j]=min(ddd[i][k]+ddd[k][j], ddd[i][j]); } } } LL l=0, r=loo, res=-1; while(l<=r) { LL mid=(l+r)/2; dinic.init(500); const int sup_t=451, sup_s=450; for(int i=0;i<cow1.size();i++) { dinic.AddEdge(sup_s, i+1, cow1[i]); } for(int i=0;i<cow2.size();i++) { dinic.AddEdge(i+1+205, sup_t, cow2[i]); } for(int i=1;i<=f;i++) { dinic.AddEdge(i, i+205, oo); } for(int i=1;i<=f;i++) { for(int j=1;j<=f;j++) { if(ddd[i][j]<=mid) { dinic.AddEdge(i, j+205, oo); } } } if(dinic.Maxflow(sup_s, sup_t)==should_flow) { res=mid; r=mid-1; } else { l=mid+1; } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜av电影| 日韩精品极品视频免费观看| 狠狠色狠狠色综合日日小说| 亚洲色图色老头| 国产精品白丝av嫩草影院| 国产精品视频yy9099| 韩国日本不卡在线| 自拍亚洲一区欧美另类| 中文字幕免费国产精品| 国产成人精品久久亚洲高清不卡| 中文字幕不卡在线视频极品| 欧美精品videosex牲欧美| 久久久久久久成人| 欧美视频一区二区三区…| 亚洲色图激情小说| 日本久久中文字幕| 亚洲性线免费观看视频成熟| 欧美日韩福利视频| 欧美成人精品在线| 久热99视频在线观看| 成人淫片在线看| 国产剧情久久久久久| 亚洲一级一级97网| 亚洲免费视频网站| 成人有码视频在线播放| 黄色成人在线播放| 丝袜美腿亚洲一区二区| 国产精品第一页在线| 57pao国产精品一区| 91超碰中文字幕久久精品| 91精品久久久久久久久| 777国产偷窥盗摄精品视频| 欧美电影免费观看大全| 国产精品一区二区三区久久| 久久中文字幕一区| 国产精品亚洲片夜色在线| 亚洲天天在线日亚洲洲精| 色小说视频一区| 日本久久久a级免费| 久久精品在线视频| 亚洲欧美日韩精品久久奇米色影视| 国色天香2019中文字幕在线观看| 成人a级免费视频| 91产国在线观看动作片喷水| 亚洲成人av中文字幕| 国产精品老女人视频| 91在线播放国产| 精品久久中文字幕久久av| 久操成人在线视频| 久久精品视频中文字幕| 91亚洲精华国产精华| 欧美日韩国产综合视频在线观看中文| 久久久久久国产精品美女| 91社区国产高清| 欧美在线性视频| 最好看的2019的中文字幕视频| 欧美亚洲国产日本| 97超碰国产精品女人人人爽| 国产欧美精品在线播放| 亚洲第一视频网站| 国产精品亚洲片夜色在线| 久久99视频免费| 久久久久久久久久久国产| 成人精品久久久| 日韩在线资源网| 亚洲成人黄色在线观看| 欧美激情亚洲视频| 亚洲人av在线影院| 在线日韩第一页| 亚洲成人a级网| 欧美亚洲成人精品| 91精品美女在线| 中文字幕久精品免费视频| 欧美日韩视频免费播放| 国产自产女人91一区在线观看| 精品久久香蕉国产线看观看亚洲| 亚洲欧洲在线视频| 国产精品视频自在线| 57pao成人永久免费视频| 在线播放精品一区二区三区| 成人激情综合网| 欧美性视频精品| 日韩电影免费在线观看中文字幕| 欧美多人乱p欧美4p久久| 影音先锋日韩有码| 亚洲美女精品成人在线视频| 国产精品久久久久久久久久尿| 欧美国产日韩免费| 九色精品免费永久在线| 色播久久人人爽人人爽人人片视av| 精品国产一区二区三区四区在线观看| 国产脚交av在线一区二区| 成人xxxxx| 亚洲国产日韩欧美综合久久| 狠狠久久亚洲欧美专区| 在线看国产精品| 欧美日韩国产123| 91精品综合久久久久久五月天| 8x海外华人永久免费日韩内陆视频| 精品香蕉在线观看视频一| 国产成人精品视频在线| 日韩的一区二区| 国产99视频在线观看| 亚洲欧洲免费视频| 欧美日韩爱爱视频| 成人免费看黄网站| 97久久精品人人澡人人爽缅北| 久久香蕉国产线看观看av| 精品久久久久久中文字幕大豆网| 亚洲精品视频中文字幕| 中国china体内裑精亚洲片| 亚洲小视频在线观看| 免费99精品国产自在在线| 久久久久久久久久久人体| 这里只有精品久久| 欧美精品videossex性护士| 九九视频这里只有精品| 久久久久久久久久久免费| 日本欧美在线视频| 国产欧美在线播放| 欧美性极品少妇精品网站| 国产精品人成电影在线观看| 2019中文字幕免费视频| 26uuu另类亚洲欧美日本一| 日韩中文字幕欧美| 亚洲精品美女视频| 91色在线视频| 精品亚洲va在线va天堂资源站| 久久天天躁狠狠躁老女人| 亚洲精品电影在线观看| 亚洲一区二区三区乱码aⅴ| 夜夜嗨av一区二区三区四区| 在线播放精品一区二区三区| 欧美激情综合色| 日韩av综合中文字幕| 日韩美女在线观看一区| 国产成人在线一区二区| 中文字幕欧美精品日韩中文字幕| 亚洲精品自在久久| 日韩av免费看网站| 久久精品国产一区二区电影| 一本色道久久88综合日韩精品| 久久久人成影片一区二区三区观看| 精品一区精品二区| 青青草99啪国产免费| 久久久久久久久爱| 一本一道久久a久久精品逆3p| 国产一区二区欧美日韩| 91美女高潮出水| 成人夜晚看av| 国产精品久久久久久久久久| 最近更新的2019中文字幕| 18久久久久久| 91久久综合亚洲鲁鲁五月天| 国产成人精品最新| 欧美精品成人91久久久久久久| 2019国产精品自在线拍国产不卡| 亚洲福利精品在线| 国产精品日韩在线观看| 国产日韩亚洲欧美| 欧美极品少妇xxxxⅹ喷水| xvideos成人免费中文版| 4438全国亚洲精品在线观看视频| 亚洲视频一区二区三区|