BZOJ 2502: 清理雪道
来源:互联网 发布:亚马逊订单管理 软件 编辑:程序博客网 时间:2024/05/18 00:56
有源汇有上下界最小流
#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define INF 2e9#define N 110#define M 12500using namespace std; int read(){ int a=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){a=a*10+c-'0';c=getchar();} return a*f;} struct edge{int to,next,v;}e[M*2];int n,m,cnt,sum,s,t,ss,tt;int a[N],d[N],head[N],cur[N]; void add(int x,int y,int v){ e[cnt].next=head[x],e[cnt].to=y,e[cnt].v=v; head[x]=cnt++; e[cnt].next=head[y],e[cnt].to=x,e[cnt].v=0; head[y]=cnt++;} int bfs(){ queue<int>q; memset(d,-1,sizeof(d)); q.push(ss),d[ss]=0; while(!q.empty()) { int x=q.front();q.pop(); if(x==tt) {memcpy(cur,head,sizeof(cur));return 1;} for(int i=head[x];i!=-1;i=e[i].next) if(d[e[i].to]==-1&&e[i].v) { d[e[i].to]=d[x]+1; q.push(e[i].to); } } return 0;} int dfs(int x,int a){ if(x==tt||!a) return a; int flow=0,f; for(int &i=cur[x];i!=-1;i=e[i].next) if(d[e[i].to]==d[x]+1&&(f=dfs(e[i].to,min(a,e[i].v)))>0) { e[i].v-=f; e[i^1].v+=f; flow+=f; a-=f; if(!a) break; } if(!flow) d[x]=-1; return flow; } int dinic(){ int res=0; while(bfs()) res+=dfs(ss,INF); return res;} int main(){ n=read(); s=0,t=n+1,ss=n+2,tt=n+3; memset(head,-1,sizeof(head)); for(int i=1;i<=n;++i) add(s,i,INF),add(i,t,INF); for(int i=1,m;i<=n;++i) { m=read(); while(m--) { int j=read(); add(i,j,INF);//每个地方至少去一次即下界为1 --a[i],++a[j]; } } for(int i=1;i<=n;++i) if(a[i]>0) sum+=a[i],add(ss,i,a[i]); else if(a[i]<0) add(i,tt,-a[i]); add(t,s,INF); sum-=dinic(); sum=e[head[t]^1].v; head[s]=e[head[s]].next,head[t]=e[head[t]].next; ss=t,tt=s; printf("%d\n",sum-dinic()); return 0;}
偷偷水一篇
阅读全文
0 0
- bzoj-2502 清理雪道
- bzoj 2502: 清理雪道
- BZOJ 2502 清理雪道
- BZOJ 2502: 清理雪道
- BZOJ 2502 清理雪道 最小流
- [上下界网络流] BZOJ 2502 清理雪道
- BZOJ 2502(清理雪道-上下界网络流)
- bzoj 2502: 清理雪道 有源汇最小流
- [BZOJ 2502]清理雪道:上下界网络流
- BZOJ 2502 清理雪道 有上下界的网络流
- 【bzoj 2502】清理雪道(有上下界的网络流)
- 有源汇上下界最小流 BZOJ 2502: 清理雪道
- [上下界有源汇最小流] BZOJ 2502: 清理雪道
- 2502: 清理雪道
- bzoj2502 清理雪道
- 清理雪道
- BZOJ2502: 清理雪道
- 【bzoj2502】清理雪道
- Redis数据类型常用指令
- 从入门到入门-Spring Boot-第一个Spring Boot应用
- 语义网应用实例
- python-作业2
- new与malloc的区别(2)
- BZOJ 2502: 清理雪道
- SRM593 Div1Medium MayTheBestPetWin
- 模块请求方式
- 鼠标移动
- jdk1.8的新特性
- 2017-07-11:考试逆序对(读题仔细)
- java中逻辑符号&(|)与&&(||)区别
- 如何生成不重复的订单号
- poj2080Calendar(历法)