POJ 1698 网络流
来源:互联网 发布:文艺 知乎 编辑:程序博客网 时间:2024/05/04 19:08
讲每个任务以及每个星期的每一天作为节点。。
连S 到 每个人物为 要求天数的流量
如果那天能做那个任务,就任务与天连边,容量1
每天都连到T点,容量1
最后判断是否流量是否是总工作天数
//tpl//ipqhjjybj_tpl.h//header.h#include <cstdio>#include <cstdlib>#include <map>#include <set>#include <algorithm>#include <cstring>#include <iostream>#include <vector>#include <string>#define mp(x,y) make_pair(x,y)#define pii pair<int,int>#define pLL pair<long long ,long long>#define rep(i,j,k) for(int i = j; i < k;i++)#define repn(i,j,k) for(int i = j; i <= k;i++)using namespace std;const int INF = 0x3f3f3f3f;const int N = 1111;int tot;int s,t;int sum;struct node{int u,v,w,next;node(){}node(int _u,int _v,int _w,int _next){u=_u,v=_v,w=_w,next=_next;}}edge[N*N];int head[N],cur[N],dis[N];int pre[N],gap[N],aug[N];const int oo=0x3f3f3f;void addEdge(int u,int v,int w){edge[tot]=node(u,v,w,head[u]);head[u]=tot++;edge[tot]=node(v,u,0,head[v]);head[v]=tot++;}int SAP(int s,int e,int n){int max_flow=0,v,u=s;int id,mindis;aug[s]=oo;pre[s]=-1;memset(dis,0,sizeof(dis));memset(gap,0,sizeof(gap));gap[0]=n;for(int i=0;i <= n;i++)cur[i]=head[i];while(dis[s]<n){if(u==e){max_flow += aug[e];for(v=pre[e]; v!=-1; v=pre[v]){int ed=cur[v];edge[ed].w -= aug[e];edge[ed^1].w += aug[e];aug[v]-=aug[e];if(edge[ed].w==0) u=v;}}bool flag=false;for(id=cur[u]; id!=-1;id=edge[id].next){v=edge[id].v;if(edge[id].w > 0 && dis[u]==dis[v]+1){flag=true;pre[v]=u;cur[u]=id;aug[v]=min(aug[u],edge[id].w);u=v;break;}}if(flag==false){if(--gap[dis[u]] == 0) break; int mindis=n;for(id=head[u]; id!=-1; id=edge[id].next){v=edge[id].v;if(edge[id].w>0 && dis[v] < mindis){mindis = dis[v];cur[u]=id;}}dis[u] = mindis + 1;gap[dis[u]]++;if(u!=s)u=pre[u];}}return max_flow;}int n,m;int kk[10];int main(){int tt;scanf("%d",&tt);while(tt--){scanf("%d",&n);tot=sum=s=0;t=1;memset(head,-1,sizeof(head));int maxFlow = 0;int tmp;int maxWeek = 0;rep(i,0,n){rep(j,1,10){scanf("%d",kk+j);}maxFlow += kk[8];maxWeek = max(maxWeek,kk[9]);addEdge(s,i+2,kk[8]);rep(j,1,8){if(kk[j])rep(z,0,kk[9]){addEdge(i+2,n+1+z*7+j,1);}}}rep(j,1,8){rep(z,0,maxWeek){addEdge(n+1+z*7+j,t,1);}}int ans = SAP(s,t,n+1+(maxWeek-1)*7+8);//printf("ans=%d maxFlow=%d\n",ans,maxFlow);if(ans >= maxFlow)puts("Yes");else puts("No");}return 0;}
0 0
- POJ 1698 网络流
- 网络流 poj 1698
- POJ-1698-网络流构图
- POJ-1698-网络流最大流构图
- POJ 1698 网络流最大流水题
- poj 1698 Alice's Chance 网络流
- POJ 1698 图论之网络流
- poj 1698 Alice's Chance 网络流
- poj 1149 网络流
- poj 1149 网络流
- poj 1273 网络流
- poj 2112 网络流
- poj 3436 网络流
- poj 1087 网络流
- poj 1273 网络流
- poj 1149 网络流
- poj 3204 网络流
- POJ 1149 网络流
- raw_input 读取输入值
- IO流(File对象功能-文件列表)-(File对象功能-文件列表2)
- 背包问题(贪心算法)
- poj3122
- OnCreate()和OnDraw()函数
- POJ 1698 网络流
- 研究生阶段读的一些书籍及下载链接地址
- 从含有M个元素的集合中任选n个的排列组合
- 博客与链接
- CentOS6.4下Mysql数据库的安装与配置
- android的Log输出(实例)
- IO流(列出目录下所有内容-递归)-(列出目录下所有内容-带层次)
- hibernate继承策略
- 进程创建