bzoj2768 網路流 最小割 冠軍調查

2021-08-14 20:14:32 字數 1357 閱讀 1873

description

input

第一行兩個整數n和m,其中n(2≤n≤300)表示參與者的總數,m(0≤m≤n(n-1)/2)表示朋友的總對數。

第二行n個整數,要麼是0要麼是1。如果第i個整數的值是0的話,表示第i個人心裡認為切爾西將與冠軍無緣,如果是1的話,表示他心裡認為切爾西必將奪魁。

下面m行每行兩個不同的整數,i和j(1≤i, j≤n)表示i和j是朋友。注意沒有一對朋友會在輸入中重複出現。朋友關係是雙向的,並且不會傳遞。

output

只有乙個整數,為最小的和。

sample input

3 3

1 0 0

1 21 3

2 3

sample output

hint

最好的安排是所有人都在發言時說切爾西不會奪冠。這樣沒有一對朋友的立場相左,只有第1個人他違心說了話。

題解

一眼最小割不解釋。。

不奪冠的st->他連邊,流量1

奪冠的他->ed連邊,流量1

朋友建點,st->第乙個朋友->點->第二個朋友->ed,流量全為1

正確性顯然

hljs cpp">#include

#include

#include

#include

using

namespace

std;

struct node

a[211000];int len,last[211000];

void ins(int x,int y,int c)

int h[111000],list[111000];

int head,tail,st,ed;

bool bt_h()

}head++;

}if(h[ed]>0)return

true;

return

false;

}int findflow(int x,int f)

int n,m,col[2100];

int main()

for(int i=1;i<=m;i++)

int ans=0;

while(bt_h())ans+=findflow(st,999999999);

printf("%d\n",ans);

return

0;}

BZOJ 2768 冠軍調查(最小割)

題意 給出乙個無向圖,每個點有乙個值0或者1。現在重新設定每個點的值0或者1。設重新設定後的點與原來的點有x個點的值不一樣 重新設定後有y條邊 u,v 使得u和v的值不同。最小化x y。思路 若初始值為1則原點向其連邊 否則其向匯點連邊。對於邊 u,v u和v的值不同,則連邊。求最小割。若左側被割到...

BZOJ 2768 冠軍調查 最小割

time limit 10 sec memory limit 128 mb submit 971 solved 661 submit status discuss 第一行兩個整數n和m,其中n 2 n 300 表示參與者的總數,m 0 m n n 1 2 表示朋友的總對數。第二行n個整數,要麼是0要...

bzoj1412 網路流最小割

狼愛上羊啊愛的瘋狂,誰讓他們真愛了一場 狼愛上羊啊並不荒唐,他們說有愛就有方向 orez聽到這首歌,心想 狼和羊如此和諧,為什麼不嘗試羊狼合養呢?說幹就幹!orez的羊狼圈可以看作乙個n m個矩陣格仔,這個矩陣的邊緣已經裝上了籬笆。可是drake很快發現狼再怎麼也是狼,它們總是對羊垂涎三尺,那首歌只...