hdu 3277 二分 並查 最大流

2021-06-18 13:59:10 字數 1123 閱讀 7876

題意 : 和3081差不多;只是多了乙個條件,每個女生可以選最多k個不喜歡的男生匹配  ;

思路:將每個女孩u分為u1,u2,若u喜歡v則加一條u1到v的邊 ,容量為1 ,否則加一條u2到v的邊,容量為1 令加u1到u2的容量為k的邊;其他同3081一樣; 源點到每個女生連容量為x的邊,男生到匯點連容量為x的邊, x是列舉的輪數;

注意,二分列舉的時候,不能衝新建圖,這樣毀tle ,只修改要修改的那一部分 ;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std ;

const int n=1000;

const int m=500000;

struct node1

;struct node2

;node1 e[m],e[m];

node2 ee[m];

int n,m,f,k,top,p;

int head[n],cur[n],gap[n],pre[n],dis[n],fa[n];

int mm[n][n];

int find(int x)

void add(int u ,int v ,int c )

int work(int s,int t ,int nv)

}for( i = s ; i!=t ; i = e[cur[i]].v)

u=neck;

max_flow += cur_flow ;

}for( i = cur[u] ; i != -1 ; i = e[i].next)

if(i!=-1)

else

chushi(t);                    //初始化網路

int l = 0 , r = n , ans=0;

while(l<=r)

else

r=mid-1;

}cout << ans << endl ;

}return 0;

}

hdu3081 二分 並查集 最大流

題意 有n個女孩,n個男孩,對於每個女孩有幾個沒有爭吵過的男孩,每個女孩有幾個朋友 都是女孩 對於沒有爭吵過的男孩可以建立關係。這樣就可以進行一次遊戲,那麼下一次可以選擇乙個之前沒有選擇過的人建立關係。那麼求最多能進行多少次關係。思路 對於朋友關係,很容易想到用並查集維護,那麼在乙個集合中所連的邊都...

hdu 3228 最大流 二分

題意 一共有n個城市,一些城市裡有金礦,一些城市裡有倉庫,金礦和倉庫都有乙個容量,有m條邊,每條邊是雙向的,有乙個權值,求將所有金礦裡的儲量都運送到倉庫中,所需要經過的道路中,使最大的權值最小 思路 增設乙個超級源點和乙個超級匯點,源點與每乙個城市相連,容量為 數量,匯點與倉庫相連,容量為倉庫的容量...

poj 2112 最大流 二分

題意 有k臺擠奶機,c頭奶牛,給出這k c個實體間的距離,求出每頭奶牛都到一台擠奶機去,怎麼分配使奶牛走的最大距離最小。用二分列舉最大距離,include include define n 500 define inf 0x3fffffff int map n n dis n gap n head ...