多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > BZOJ 1570 JSOI 2008 Blue Mary的旅行 網絡流

BZOJ 1570 JSOI 2008 Blue Mary的旅行 網絡流

來源:程序員人生   發布時間:2015-03-24 08:35:11 閱讀次數:2413次

題目大意

給出1個有向圖,每天每人只能做1次飛機?,F在給出出發點,終點,和需要走的人數,還有每條航線的限制人數,問最少多少天最慢的人到達終點。

思路

很明顯是網絡流的模型,至于如何去驗證,其實連2分都不用,枚舉最少天數,然后每次加1層邊進行驗證就好了。

CODE

#define _CRT_SECURE_NO_WARNINGS #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define MAX 100010 #define MAXE 1000010 #define S 0 #define SS (MAX - 2) #define T (MAX - 1) #define INF 0x3f3f3f3f using namespace std; struct Edge{ int x, y, z; void Read() { scanf("%d%d%d", &x, &y, &z); } }edge[MAXE]; struct MaxFlow{ int head[MAX], total; int _next[MAXE], aim[MAXE], flow[MAXE]; int backup_flow[MAXE]; int deep[MAXE]; MaxFlow():total(1) {} void Add(int x, int y, int f) { _next[++total] = head[x]; aim[total] = y; backup_flow[total] = f; head[x] = total; } void Insert(int x, int y, int f) { Add(x, y, f); Add(y, x, 0); } bool BFS() { static queue<int> q; while(!q.empty()) q.pop(); memset(deep, 0, sizeof(deep)); deep[S] = 1; q.push(S); while(!q.empty()) { int x = q.front(); q.pop(); for(int i = head[x]; i; i = _next[i]) if(flow[i] && !deep[aim[i]]) { deep[aim[i]] = deep[x] + 1; q.push(aim[i]); if(aim[i] == T) return true; } } return false; } int Dinic(int x, int f) { if(x == T) return f; int temp = f; for(int i = head[x]; i; i = _next[i]) if(flow[i] && temp && deep[aim[i]] == deep[x] + 1) { int away = Dinic(aim[i], min(flow[i], temp)); if(!away) deep[aim[i]] = 0; flow[i] -= away; flow[i ^ 1] += away; temp -= away; } return f - temp; } }solver; int points, edges, persons; int main() { cin >> points >> edges >> persons; for(int i = 1; i <= edges; ++i) edge[i].Read(); solver.Insert(S, SS, persons); int now = 0; for(int i = 1;; ++i) { for(int j = 1; j <= edges; ++j) solver.Insert(now + edge[j].x, now + edge[j].y + points, edge[j].z); solver.Insert(now + points + points, T, INF); solver.Insert(SS, now + 1, INF); memcpy(solver.flow, solver.backup_flow, sizeof(solver.flow)); int max_flow = 0; while(solver.BFS()) max_flow += solver.Dinic(S, INF); if(max_flow == persons) { cout << i << endl; return 0; } now += points; } return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 免费福利午夜影视网 | 噜噜影院无毒不卡 | 成人精品视频在线观看播放 | 欧美日韩精品一区三区 | 欧美xx性| 国产呦精品一区二区三区网站 | 欧美日韩精品一区二区在线线 | 色综合欧美综合天天综合 | 欧美一级毛片欧美一级无片 | 亚洲另类天堂 | 波多野结衣视频在线看 | 欧美一区二区在线免费观看 | 亚洲免费福利视频 | 91精品国产亚洲爽啪在线影院 | 国产成人一区二区三区精品久久 | 午夜影院在线视频 | 无毒不卡 | 亚洲动漫第一页 | 网址在线观看 | 老司机午夜视频在线观看 | 国产精品人成 | 超清中文乱码字幕在线观看 | 性8成人有声小说在线播放 性freemovies中国群众 | 老司机午夜免费福利视频 | 日本337p| 国产一二三区在线 | 成年人免费看视频 | 日本高清免费视频www | 国产精品免费视频一区一 | 亚洲图片偷拍自拍 | 国产v综合v亚洲欧美 | 欧美日韩一二三 | 亚洲成人偷拍 | 久久久久99这里有精品10 | 欧美极品欧美日韩 | 欧美视频一| 国产日产欧产精品精品推荐在线 | 印度videos又粗又大 | 国产成人永久免费视频 | 国产成人亚洲精品影院 | 日本www网站|