bzoj1934 [Shoi2007]Vote 善意的投票(最小割)

来源:互联网 发布:淘宝客qq群 编辑:程序博客网 时间:2024/05/17 23:07

s向1的点建边,容量为1,0的点向T建边,容量为1,对于所有朋友关系:如果原来意见相同,就建双向边,容量为1,否则建边由1指向0,容量为1。最小割就是答案。最后s集合都是1,T集合都是0.

#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 310inline int read(){    int x=0,f=1;char ch=getchar();    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();    return x*f;}int n,m,col[N],h[N],num=1,T=301,lev[N],ans=0,cur[N];struct edge{    int to,next,val;}data[91000];inline void add(int x,int y,int val,int op){    data[++num].to=y;data[num].next=h[x];h[x]=num;data[num].val=val;    data[++num].to=x;data[num].next=h[y];h[y]=num;data[num].val=val*op;}inline bool bfs(){    queue<int>q;memset(lev,0,sizeof(lev));    lev[0]=1;q.push(0);    while(!q.empty()){        int x=q.front();q.pop();        for(int i=h[x];i;i=data[i].next){            int y=data[i].to;if(lev[y]||!data[i].val) continue;            lev[y]=lev[x]+1;q.push(y);        }    }return lev[T];}inline int dinic(int x,int low){    if(x==T) return low;int tmp=low;    for(int i=h[x];i;i=data[i].next){        int y=data[i].to;if(lev[y]!=lev[x]+1||!data[i].val) continue;        int res=dinic(y,min(data[i].val,tmp));        if(!res) lev[y]=0;else tmp-=res,data[i].val-=res,data[i^1].val+=res;        if(!tmp) return low;    }return low-tmp;}int main(){//  freopen("a.in","r",stdin);    n=read();m=read();    for(int i=1;i<=n;++i){        col[i]=read();col[i]?add(0,i,1,0):add(i,T,1,0);    }while(m--){        int x=read(),y=read();if(col[x]<col[y]) swap(x,y);        if(col[x]==col[y]) add(x,y,1,1);        else add(x,y,1,0);    }while(bfs()){memcpy(cur,h,sizeof(cur));ans+=dinic(0,inf);}    printf("%d\n",ans);    return 0;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 从妻 下妻 齐妻 求妻 妩仸 眉妩 凌昭云雪妩 罪臣之妻斐妩 妩的读音 凌昭云雪妩全文阅读 极至爱妩2 极至爱妩 妩组词 时妩作品 妩怎么读 乐妩作品集 妩媚 妩媚意思 妩媚的意思 妩媚近义词 表妹多妩媚 妩媚反义词 妩媚读音 妩媚拼音 妩媚的拼音 美人多妩媚 妩媚浪妈 妩媚妖姬 妩媚迷男txt 妩媚的读音 妩媚图片 妩媚 迷男 妩媚的什么 妩媚迷男 快穿之妩媚系统h 我见贵妃多妩媚 表哥见我多妩媚 我见青山多妩媚 妩媚的近义词 妩媚的反义词