poj 3281 Dinicing
来源:互联网 发布:宁波院士之乡 知乎 编辑:程序博客网 时间:2024/06/05 20:17
简单建图,source->food->cow1->cow2->drink->collection
一开始数组开小了一直TLE,居然不是RE……
/*author:jxylang:C/C++university:China,Xidian University**If you need to reprint,please indicate the source***/#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#define INF 1E9using namespace std;#define maxn 405#define maxm 160005int d[maxn],first[maxn],cur[maxn],cnt;struct edge{ int v,c,f,next; edge(int &a,int &b,int cc):v(b),c(cc),f(0) { next=first[a]; first[a]=cnt++; } edge(){};}e[maxm];inline void addedge(int v,int u,int c){ e[cnt]=edge(v,u,c); e[cnt]=edge(u,v,0);}queue<int> q;int vis[maxn];int S,E;int bfs(){ int v,u; memset(vis,0,sizeof(vis)); while(!q.empty())q.pop(); q.push(S); d[S]=0;vis[S]=1; while(!q.empty()) { v=q.front();q.pop(); for(int i=first[v];~i;i=e[i].next) { u=e[i].v; if(!vis[u]&&e[i].c>e[i].f) { vis[u]=1; q.push(u); d[u]=d[v]+1; } } } return vis[E];}int dfs(int v,int re){ if(v==E||re==0)return re; int f=0,u,t; for(int &i=cur[v];~i;i=e[i].next) { u=e[i].v; if(d[v]+1==d[u]&&(t=dfs(u,min(re,e[i].c-e[i].f)))>0) { e[i].f+=t;e[i^1].f-=t; f+=t;re-=t; if(!re)break; } } return f;}int main(){ int n,F,D; while(~scanf("%d%d%d",&n,&F,&D)) { memset(first,-1,sizeof(first)); cnt=0; int i,j,a,b,t=F+D; S=0,E=2*n+F+D+1; for(i=1;i<=F;i++) addedge(0,i,1); for(i=F+1;i<=t;i++) addedge(i,E,1); for(i=t+n+1;i<E;i++) addedge(i-n,i,1); for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); while(a--) { scanf("%d",&j); addedge(j,i+t,1); } while(b--) { scanf("%d",&j); addedge(i+t+n,F+j,1); } } int ans=0; while(bfs()) { for(int i=0;i<=E;i++) cur[i]=first[i]; ans+=dfs(S,INF); } printf("%d\n",ans); }}
- poj 3281 Dinicing
- poj 3281
- POJ 3281
- poj 3281
- poj 3281
- POJ 3281
- poj 3281
- poj 3281
- poj 3281 Dining Maxflow
- POJ 3281 Dining
- poj 3281 Dining //SAP
- POJ 3281 Dining
- poj 3281 Dining
- poj 3281 Dining
- POJ 3281 Dining
- POJ 3281 Dining
- poj 3281 Dining
- poj 3281 最大流
- C++ Date Structure 3
- SQL Sever 2000/2005/2008下载地址集合
- 完美处理unicode码与其他字符串混合的字符串
- Ubuntu11.10设置桌面启动器(桌面快捷方式)
- android sdk platforms 无法下载安装
- poj 3281 Dinicing
- Oracle Rman 命令详解(List report backup configure)
- JSF入门、简单示例
- HTML5画布更广泛的KineticJS函数
- Oracle 快照控制文件(snapshot control file)
- 程序员的职业规划(读的蛮有感觉的)
- 最长单调递增子序列
- 学数据结构当然会比学第二门语言觉得难
- ibatis-Spring 整合