思路:
建圖我根本沒有想到啊…….
(我是不會告訴你我借鑑了一下題解的思路)
把每個人拆成喜歡的和不喜歡的點
男 喜歡 向 男 不喜歡 連 邊權為k的邊
如果男喜歡女 那麼 男喜歡向 女喜歡 連 1
如果男 不喜歡女 那麼 男不喜歡 向 女不喜歡 連1
男 喜歡 向 男不喜歡 連k
女 不喜歡 向 女喜歡 連k
源點 向 男喜歡 連 二分的那個值
女喜歡 向匯點 連 二分的那個值
最後判斷一下 總流量 是不是等於 n*二分的那個值
嗯 大概就醬~
//by siriusren
#include
#include
#include
#include
using
namespace
std;
#define n 10005
int n,k,ed=6666,answer;
char a[55][55];
struct dinic
void add(int x,int y,int z)
bool insert(int num)
for(int i=1;i<=n;i++)add(i,i+2*n,k),add(i+3*n,i+n,k),add(i+n,6666,num);
return flow()==num*n;
}bool tell()
return vis[ed]!=-1;
}int zeng(int x,int y)
if(!y)vis[x]=-1;
return r;
}int flow()
}dinic;
int main()
printf("%d\n",answer);
}
BZOJ1305 網路流最大流
bzoj1305 網路流最大流 分析 建立源點和匯點,將男孩分為喜歡點和不喜歡點,每個男孩喜歡點跟源點連線,權值為要求的答案,女孩跟匯點連線,權值為要求的答案 男孩的喜歡點和男孩的不喜歡點鏈結,權值為k,女孩的喜歡點和女孩的不喜歡點鏈結,權值為k 男孩跟喜歡的女孩連線,權值為1,同樣男孩不喜歡的女孩...
(二分 網路流)Optimal Milking
題意為n個奶牛站,m頭奶牛,每個奶牛站的奶牛上限k 給出奶牛站和奶牛對其他實體的距離,距離為0即為兩個實體無路徑,求出所有奶牛到奶牛站中走的最遠的奶牛的最遠距離的最小值 最大中的最小問題,可以二分。我們先用floyd處理出實體到實體之間的最近距離,二分這個最遠距離,建圖 兩實體距離小於等於二分值時才...
BZOJ2756 奇怪的遊戲(二分,網路流)
bzoj blinker最近喜歡上乙個奇怪的遊戲。這個遊戲在乙個 n m 的棋盤上玩,每個格仔有乙個數。每次 blinker 會選擇兩個相鄰 的格仔,並使這兩個數都加上 1。現在 blinker 想知道最少多少次能使棋盤上的數都變成同乙個數,如果永遠不能變成同 乙個數則輸出 1。輸入的第一行是乙個整...