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 3sample output hint1 0 0
1 21 3
2 3
最好的安排是所有人都在發言時說切爾西不會奪冠。這樣沒有一對朋友的立場相左,只有第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很快發現狼再怎麼也是狼,它們總是對羊垂涎三尺,那首歌只...