hdu3572(网络流)
来源:互联网 发布:mac语音播报怎么关闭 编辑:程序博客网 时间:2024/06/03 23:22
链接:点击打开链接
题意:有M个机器(代表一天可以同时干M天的工作),有N个任务。每个任务必须在Si或者以后开始做,在Ei或者之前完成,完成每个任务必须处理Pi个时间单位,问最后是否可以完成这N个任务
代码:
#include <set>#include <queue>#include <vector>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;const int INF=0x3f3f3f3f;struct node{ int u,v,cap; node(){} node(int u,int v,int cap):u(u),v(v),cap(cap){}}es[5000005];int R,S,T;int dis[5005],iter[5005];vector<int> tab[5005];void addedge(int u, int v, int cap){ tab[u].push_back(R); es[R++]=node(u,v,cap); tab[v].push_back(R); es[R++]=node(v,u,0);}int bfs(){ int i,h; queue<int> q; q.push(S); memset(dis,INF,sizeof(dis)); dis[S]=0; while(q.size()){ h=q.front(); q.pop(); for(i=0;i<tab[h].size();i++){ node &e=es[tab[h][i]]; if(e.cap>0&&dis[e.v]==INF){ dis[e.v]=dis[h]+1; q.push(e.v); } } } return dis[T]<INF;}int dfs(int x,int maxflow){ int flow; if(x==T) return maxflow; for(int &i=iter[x];i<tab[x].size();i++){ node &e=es[tab[x][i]]; if(dis[e.v]==dis[x]+1&&e.cap>0){ flow=dfs(e.v,min(maxflow,e.cap)); if(flow){ e.cap-=flow; es[tab[x][i]^1].cap+=flow; return flow; } } } return 0;}int dinic(){ int ans,flow; ans=0; while(bfs()){ memset(iter,0,sizeof(iter)); while(flow=dfs(S,INF)) ans+=flow; } return ans;}int main(){ //把每个事件看做一个点,由源点 int n,m,t,i,j,u,v,w,cas,sum; //向每个点连容量是这个事件花费 scanf("%d",&t); //的天数,将这个事件与和他能够 for(cas=1;cas<=t;cas++){ //用的天数连容量是1的边,代表 scanf("%d%d",&n,&m); //每天最多做一工作量,在由每个 R=S=sum=0,T=1005; //时间点向汇点连容量是m的边,表 for(i=0;i<=T;i++) //示每天最多的工作量 tab[i].clear(); for(i=1;i<=n;i++){ scanf("%d%d%d",&w,&u,&v); addedge(0,i,w); for(j=u+n;j<=v+n;j++) addedge(i,j,1); sum+=w; } for(i=1;i<=500;i++) addedge(i+n,T,m); if(sum==dinic()) printf("Case %d: Yes\n\n",cas); else printf("Case %d: No\n\n",cas); } return 0;}
0 0
- hdu3572(网络流)
- Task Schedule(Hdu3572网络流)
- HDU3572 Task Schedule 网络流最大流
- hdu3572 Task Schedule 网络流(Dinic)
- hdu3572,网络流,dinic算法实现
- hdu3572 最大流
- hdu3572 最大流
- hdu3572(DINIC最大流)
- hdu3572 建图 最大流
- HDU3572(最大流)
- hdu3572 Task Schedule (最大流)
- HDU3572 Task Schedule 【最大流】
- 【最大流】【HDU3572】Task Schedule
- HDU3572 Task Schedule(最大流)
- 最大流(dinic) hdu3572
- hdu3572 Task Schedule【最大流】
- HDU3572:Task Schedule(最大流)
- hdu3572 Task Schedule(最大流dinic)
- 使用 IntelliJ IDEA 在 Java 项目中添加 JAR 包
- 由于/bin 不在PATH 环境变量中,故无法找到该命令
- 网页截图方案selenium/phantomjs
- STM32F1之UART
- HTML5 表单属性
- hdu3572(网络流)
- mac安装windows虚拟机
- 【Android官方文档】翻译Android官方文档-Fragment(四)
- UITTableView滑动删除
- Notice: Undefined variable
- AAA Xms Xmx PermSize MaxPermSize 区别
- 如何使用 QUnit 进行 JavaScript 单元测试
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks----论文笔记
- 华为机试题—在字符串中找出连续最长的数字串 c++