BZOJ1934Vote 善意的投票

2021-07-09 08:03:38 字數 1413 閱讀 3665

1934: [shoi2007]vote 善意的投票

time limit: 1 sec memory limit: 64 mb

submit: 1574 solved: 960

description

幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋友之間發生衝突的總數加上和所有和自己本來意願發生衝突的人數。 我們的問題就是,每位小朋友應該怎樣投票,才能使衝突數最小?

input

第一行只有兩個整數n,m,保證有2≤n≤300,1≤m≤n(n-1)/2。其中n代表總人數,m代表好朋友的對數。檔案第二行有n個整數,第i個整數代表第i個小朋友的意願,當它為1時表示同意睡覺,當它為0時表示反對睡覺。接下來檔案還有m行,每行有兩個整數i,j。表示i,j是一對好朋友,我們保證任何兩對i,j不會重複。

output

只需要輸出乙個整數,即可能的最小衝突數。

sample input

3 3

1 0 0

1 2

1 3

3 2

sample output

1 hint

在第乙個例子中,所有小朋友都投贊成票就能得到最優解

source

day2

最小割模型。。

網路流最大流+超級源超級匯。。

本來建圖的時候f[0][i]=1等等都寫成了f[0][x]=1。。坑爹啊。。查了一節課沒看出來。。果然我太弱

#include

#include

#include

using namespace std;

int f[601][601],head,tail,dis[601],ans,sum=0,n,m,i,q[601];

intread()

while (ch>='0' && ch<='9')

return

s*w;

}int bfs()

}if (dis[n+1]!=-1)

return

1; else

return0;}

int dfs(int

s,int low)

return0;}

int main()

else

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

ans=0;

while (bfs())

while (sum=dfs(0,0x7fffffff))

ans+=sum;

printf("%d",ans);

return

0;}

BZOJ 1934 善意的投票

題目大意 幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋友之間發生衝突的總數加上和所有和自己本來意願發生衝突的人...

BZOJ 1934 善意的投票 最小割

time limit 1 sec memory limit 64 mb submit 2354 solved 1471 submit status discuss 幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,...

SHOI2007 bzoj1934 善意的投票

description 幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋友之間發生衝突的總數加上和所有和自己本來意...