BZOJ2768 JLOI2010 冠軍調查

2022-05-12 03:14:12 字數 2130 閱讀 5267

time limit: 10 sec  memory limit: 128 mb

submit: 484  solved: 332

[submit][status]一

參與者都將發言,闡述自己的看法。參與者的心裡都有乙個看法,比如firedancer認為切爾西不可能奪冠,而waterdancer認為切爾西一定問

鼎。但是因為waterdancer是firedancer的好朋友,所以可能firedancer為了遷就自己的好朋友,會在發言中支援切爾西。也就是

說每個參與者發言時闡述的看法不一定就是心裡所想的。現在告訴你大家心裡的想法和參與者的朋友網,希望你能安排每個人的發言內容,使得違心說話的人的總數

與發言時立場不同的朋友(對)的總數的和最小。

第一行兩個整數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是朋友。注意沒有一對朋友會在輸入中重複出現。朋友關係是雙向的,並且不會傳遞。

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

3 31 0 0

1 21 3

2 31

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

題解:冠軍調查=善意的投票

對於互相排斥的連容量1的雙向邊,對於支援0的,從s連到它一條1,對於支援1的,從它到t連一條1,求最大流。

考慮每對不在同一集合裡的朋友,他們對最小割的貢獻就是1,考慮說了違心話的人,對最小割的貢獻也是1。

**:

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include

10 #include11 #include

12#define inf 1000000000

13#define maxn 500

14#define maxm 150000

15#define eps 1e-10

16#define ll long long

17#define pa pair18

#define for0(i,n) for(int i=0;i<=(n);i++)

19#define for1(i,n) for(int i=1;i<=(n);i++)

20#define for2(i,x,y) for(int i=(x);i<=(y);i++)

21#define for3(i,x,y) for(int i=(x);i>=(y);i--)

22using

namespace

std;

23 inline int

read()

2427

while(ch>='

0'&&ch<='9')

28return x*f;29}

30int n,m,s,t,maxflow,tot=1

,a[maxn],b[maxn],head[maxn],cur[maxn],h[maxn],q[maxn];

31struct edgee[maxm];

32void ins(int x,int y,int z)

33void insert(int x,int y,int z)

34bool

bfs()

3546}47

return h[t]!=-1;48

}49int dfs(int x,int

f)50

61if(!used) h[x]=-1;62

return

used;63}

64void

dinic()

6571}72

intmain()

7382

for1(i,m)

8387

dinic();

88 printf("

%d\n

",maxflow);

89return0;

90 }

view code

BZOJ2768 JLOI2010 冠軍調查

題目大意 題面講的這麼清晰明白 具體思路 最小割 建立超級源匯點,希望切爾西贏的從s向它連容量為1的邊,希望切爾西輸的從它向t連容量為1的邊。在朋友之間連一條雙向邊,答案就是最小割。如果存在一條從s到t的路徑,相當於產生了衝突。必須說謊 割掉到s或t的邊 或者與朋友意見不統一 割掉和朋友的邊 ac ...

BZOJ 2768 冠軍調查

link solution 一道比較基礎的最大流的題目 一般看到將點分為兩類的題目就要往網路流方向想吧 建圖 源點向每個初始立場為1的人連權值為1的邊。每個初始立場為0的人向匯點連權值為1的邊。好朋友之間互相連權值為1的邊。最小割即是答案。要滿足要求且總和最小,就不能讓任何一對 1,0 關係成立,這...

BZOJ 2768 冠軍調查(最小割)

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