hdu4292Food(最大流Dinic算法)

  /*
   題意:每一個人都有喜歡的吃的和喝的,每一個人只選擇一個數量的吃的和一個數量的喝的,問能滿足最多的人數!?
    思路:建圖很是重要!f-food, p-people, d-drink
    建圖: 0(源點)--->f--->p---->p'---->d--->t(匯點)
    將人拆分很是重要,因為每一個人最多只能有一種選擇,也就是p--->p'的最大流量是 1!
        如果還是不清楚,看一看下圖的例子,將人拆分與不拆分的區別!
         
*/
1
#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<vector> 6 #include<queue> 7 #define N 850 8 #define M 201000 9 #define INF 0x3f3f3f3f 10 using namespace std; 11 12 struct EDGE{ 13 int v, cap, nt; 14 }; 15 16 int first[N]; 17 EDGE g[M]; 18 int cnt; 19 int n, f, d; 20 21 void addEdge(int u, int v, int cap){ 22 g[cnt].v=v; 23 g[cnt].cap=cap; 24 g[cnt].nt=first[u]; 25 first[u]=cnt++; 26 27 g[cnt].v=u; 28 g[cnt].cap=0; 29 g[cnt].nt=first[v]; 30 first[v]=cnt++; 31 } 32 33 int ans, ss; 34 35 queue<int>q; 36 int dist[N]; 37 38 bool bfs(){ 39 memset(dist, 0, sizeof(dist)); 40 dist[0]=1; 41 q.push(0); 42 while(!q.empty()){ 43 int u=q.front(); 44 q.pop(); 45 for(int e=first[u]; ~e; e=g[e].nt){ 46 int v=g[e].v; 47 int cap=g[e].cap; 48 if(!dist[v] && cap>0){ 49 dist[v]=dist[u]+1; 50 q.push(v); 51 } 52 } 53 } 54 if(dist[ss+1]==0) return false; 55 return true; 56 } 57 58 int dfs(int u, int flow){ 59 int ff; 60 if(u==ss+1) return flow; 61 for(int e=first[u]; ~e; e=g[e].nt){ 62 int v=g[e].v; 63 int cap=g[e].cap; 64 if(dist[v]==dist[u]+1 && cap>0 && (ff=dfs(v, min(cap, flow)))){ 65 g[e].cap-=ff; 66 g[e^1].cap+=ff; 67 return ff; 68 } 69 } 70 dist[u]=-1;//表示u節點不能到達匯點! 71 return 0; 72 } 73 74 void Dinic(){ 75 ans=0; 76 int d; 77 while(bfs()) 78 while(d=dfs(0, INF)) 79 ans+=d; 80 } 81 82 int main(){ 83 while(scanf("%d%d%d", &n, &f, &d)!=EOF){ 84 ss=2*n+f+d; 85 cnt=0; 86 memset(first, -1, sizeof(first)); 87 for(int i=1; i<=f; ++i){//源點到吃的建一條有向邊,最大流量為吃的的數量 88 int x; 89 scanf("%d", &x); 90 addEdge(0, i, x); 91 } 92 93 for(int i=1; i<=d; ++i){//喝的到匯點建一條有向邊,最大流量為喝的的數量 94 int x; 95 scanf("%d", &x); 96 addEdge(n*2+f+i, ss+1, x); 97 } 98 for(int i=1; i<=n; ++i){//吃的到人建一條有向邊,最大流量為1 99 getchar(); 100 for(int j=1; j<=f; ++j){ 101 char ch; 102 scanf("%c", &ch); 103 if(ch=='Y') 104 addEdge(j, f+i, 1); 105 } 106 } 107 108 for(int i=1; i<=n; ++i){//人到喝的建一條有向邊,最大流量為1 109 addEdge(f+i, n+f+i, 1);//人屬于節點容量,將人進行拆分,因為每一個人只能有一種選擇! 110 getchar(); 111 for(int j=1; j<=d; ++j){ 112 char ch; 113 scanf("%c", &ch); 114 if(ch=='Y') 115 addEdge(n+f+i, f+n*2+j, 1); 116 } 117 } 118 119 Dinic(); 120 printf("%d\n", ans); 121 } 122 return 0; 123 }

?

轉載于:https://www.cnblogs.com/hujunzheng/p/3950737.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531693.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531693.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531693.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python3.5 連接mysql_python3.5 連接mysql本地數據庫

前期準備工作&#xff1a;安裝python的模塊&#xff0c;網上大部分讓安裝mysqldb模塊&#xff0c;但是會報錯&#xff0c;原因是python3.5不被其支持&#xff1a;請看該鏈接 我們也可以這樣解決&#xff1a;直接執行&#xff1a;sudo pip3 install pymysql;在python3中輸入impo…

java異常順序_網易新聞

public class SmallT {public static void main(String args[]) {SmallT t new SmallT();int b t.get();System.out.println(b);}public int get() {try {return 1;} finally {return 2;}}}返回的結果是2。我可以通過下面一個例子程序來幫助我解釋這個答案&#xff0c;從下面…

java中自動裝箱的問題

package wrapper;public class WrapperDemo {public static void main(String[] args) {Integer anew Integer(5);Integer bnew Integer(5);System.out.println(ab);System.out.println(a.equals(b));/*falsetrue*/Integer c127;//屬于自動裝箱Integer d127;//jdk1.5以后&#…

下載國外網站資料需java_Java開發必知道的國外10大網站

1、https://www.google.com/不解釋2、https://stackoverflow.com里面包含各種開發遇到的問題及答案&#xff0c;質量比較高。3、https://github.com/免費的開源代碼托管網站&#xff0c;包括了許多開源的項目及示例項目等。4、https://dzone.com/提供技術新聞、編程教程、及各種…

poj 1950 Dessert(dfs枚舉,模擬運算過程)

/*   這個代碼運行的時間長主要是因為每次枚舉之后都要重新計算一下和的值&#xff01;    如果要快的話&#xff0c;應該在dfs&#xff0c;也就是枚舉的過程中計算出前邊的數值&#xff08;這種方法見第二個代碼&#xff09;&#xff0c;直到最后&#xff0c;這樣不必每…

poj1949Chores(建圖或者dp)

1 /*2 題意&#xff1a;n個任務&#xff0c;有某些任務要在一些任務之前完成才能開始做&#xff01;3 第k個任務的約束只能是1...k-1個任務&#xff01;問最終需要最少的時間完成全部的 4 任務&#xff0…

java 空數組如何判斷,java判斷數組是否為空

java判斷數組是否為空根據數組長度判斷&#xff0c;如果為0&#xff0c;則為空&#xff0c;反之不是。 (推薦學習&#xff1a;java課程)public class Main {public static void main(String[] args) {int[] array1 new int[]{}; //被當成 {0}if (array1 null) {System.out.pr…

2014牡丹江網絡賽ZOJPretty Poem(暴力枚舉)

/*   將給定的一個字符串分解成ABABA 或者 ABABCAB的形式&#xff01; 思路&#xff1a;暴力枚舉A, B, C串&#xff01; */ 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<string>5 6 using namespace std;7 str…

php switch goto,PHP goto語句用法實例

問題當 PHP 在執行代碼過程&#xff0c;在某一時刻我們希望它能跳轉到某一特定位置繼續執行代碼&#xff0c;該怎么做呢&#xff1f;回答在 PHP 中&#xff0c;我們可以使用 goto 操作符來使 PHP 代碼執行器跳轉到程序中某一特定位置。goto 的使用有一定限制&#xff0c;如&…

php curl cookie,php中curl獲取返回頁面的cookie

php的curl可以模仿用戶瀏覽網頁并且獲取網頁的cookie,獲取cookie還有專用的參數如CURLOPT_COOKIEJAR 用于保存 cookie 到文件了,下面一起來看幾個例子吧.curl可以獲取返回頁面設置的cookie,原理跟get_headers是一樣的,在返回的頭信息中將"Set-Cookie:"的內容取出來即…

php訪問網頁post獲取源碼,第一次抓別人網站數據,用postman直接請求可以獲取到返回數據,通過代碼的方式就一直報錯,php...

最近需要抓取下KFC的一些數據通過postman把請求地址和參數都拿過來后可以返回數據我就天真的以為可以通過代碼直接發送一個post請求即可但是通過php的curl模擬請求后&#xff0c;返回的一直是服務器異常剛開始時好像成功過&#xff0c;但現在一直都是報這個&#xff0c;我用的就…

c++中關于初始化型參列表的一些問題

1 /*2 1.成員是按照他們在類中出現的順序進行初始化的&#xff0c;而不是按照他們在初始化列表出現的順序初始化的!3 一個好的習慣是&#xff0c;按照成員定義的順序進行初始化。4 2.數組成員在初始化型參列表中不正確 5 */6 #include<iostream>7 #include<cstdio&…

話術php源碼,戀愛話術寶典織夢源碼

戀愛話術寶典網頁版&#xff1a;http://vi.520menghuan.cn戀愛話術寶典app下載&#xff1a;https://www.lanzous.com/i2dmywd戀愛話術寶典app&#xff0c;里面有超過4萬條可復制聊天的戀愛聊天話術&#xff0c;這是一款經典的“智能代聊 APP”。花式套路小哥哥、小姐姐&#xf…

c++中基類與派生類中隱含的this指針的分析

先不要看結果&#xff0c;看一下你是否真正了解了this指針&#xff1f; 1 #include<iostream>2 using namespace std;3 4 class Parent{5 public:6 int x;7 Parent *p;8 public:9 Parent(){} 10 Parent(int x){ 11 …

java中子類與父類中隱含的this引用的分析

/*看一下下面的程序&#xff0c;看是否你的答案和運行的答案是否一致&#xff01; */ class Parent{public int x;public Parent p;public Parent(){}public Parent(int x){this.xx; pthis;}public void f(){System.out.println("Parent::f()"); }public void g(){Sy…

php注冊機制,php自動注冊登錄驗證機制實現代碼_PHP教程

背景&#xff1a;在phpwind站點后臺添加一個名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應用)的應用&#xff0c;整個“廣告管家”的應用是通過iframe載入&#xff0c;載入的具體內容根據不同站點顯示針對該站點的具體內容&#xff0c;為了提高易用性&#xff0c;有以下的…

codeforce No to Palindromes!(枚舉)

1 /*2 題意&#xff1a;給定一個字符串中沒有任何長度>1的回文子串&#xff01;求按照字典序的該串的下一個字符串3 也不包含長度>1的任何回文子串&#xff01;4 5 思路&#xff1a;從最低位進行枚舉&#xff0c;保證第i位 不與 第 i-1位和第 i-2位相…

php js 比較,PHP與JS的比較

1樓一直以來&#xff0c;php和js一樣&#xff0c;都被視做腳本語言。的確&#xff0c;他們兩者蠻像的。首先他們都是弱類型語言&#xff0c;定義變量的時候不需要指定某個具體類型&#xff0c;變量類型可以實現隱式轉換。雖然很多人說這樣會帶來很多一些潛在的問題&#xff0c;…

codeforces Restore Cube(暴力枚舉)

1 /*2 題意&#xff1a;給出立方體的每個頂點的坐標&#xff08;是由源坐標三個數某幾個數被交換之后得到的&#xff01;&#xff09;&#xff0c; 3 問是否可以還原出一個立方體的坐標&#xff0c;注意這一句話&#xff1a;4 The numbers in the i-th output line…

php 非遞歸調用,php 無限分類(非遞歸)

/*** 無限分類* 2011/8/24* kcj* */include "../conn/conn.php";$flpid$_POST[flpid];$fltitle$_POST[title];$fldes$_POST[des];if(isset($_POST[action])!&&$_POST[action]"add"){ // 無限分類(非遞歸)&#xff0c;用路徑來判斷分類歸屬(flidflp…