bzoj1532 [POI2005]Kos-Dicing(二分+最大流)

来源:互联网 发布:2016团购份额CDICC数据 编辑:程序博客网 时间:2024/06/03 23:44

二分答案,最大流判是否满流。

#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <cmath>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 20010inline 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,h[N],num=1,T=20001,lev[N],cur[N];struct edge{    int to,next,val;}data[90000];inline void add(int x,int y,int val){    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=0;}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;if(y==T) return 1;q.push(y);        }    }return 0;}inline int dinic(int x,int low){    if(x==T) return low;int tmp=low;    for(int &i=cur[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 data[i].val-=res,data[i^1].val+=res,tmp-=res;        if(!tmp) return low;    }return low-tmp;}inline bool jud(int x){    num=1;int ans=0;    for(int i=1;i<=n;++i) data[++num].val=x,data[++num].val=0;    for(int i=1;i<=m*3;++i) data[++num].val=1,data[++num].val=0;    while(bfs()){memcpy(cur,h,sizeof(cur));ans+=dinic(0,inf);}    return ans==m;}int main(){//  freopen("a.in","r",stdin);    n=read();m=read();    for(int i=1;i<=n;++i) add(i,T,0);    for(int i=1;i<=m;++i){        add(n+i,read(),1);add(n+i,read(),1);add(0,n+i,1);    }int l=1,r=m;    while(l<=r){        int mid=l+r>>1;        if(jud(mid)) r=mid-1;        else l=mid+1;    }printf("%d\n",r+1);    return 0;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大纸箱 纸箱出售 纸箱纸板厂 纸箱厂厂家 特大纸箱 纸箱板 纸箱回收 订做纸箱 北京纸箱厂 西安纸箱厂 塑料纸箱 成都纸箱 抽纸箱 无锡纸箱厂 买纸箱 纸箱机 天津纸箱 东莞纸箱厂 大型纸箱厂 纸箱订做 附近纸箱厂 蚌埠纸箱厂 旧纸箱 回收纸箱 定制纸箱 哪里有纸箱 淄博纸箱 沈阳纸箱 纸箱包装网 珠海纸箱厂 纸箱定做 纸箱设计 长沙纸箱厂 大纸箱价格 苏州纸箱厂 纸箱设备 纸箱哪里买 收纸箱 高档纸箱 做纸箱设备 蜂窝纸箱