题目大意:有n个点m条单向边,每条边有一个容量。现有x人要分批从1走到n,问每批最多能走多少人,分几批运完(或输出无法运完)。

解题思路:一看就是网络流的题目。每批最多能走多少人,即最大流。分几批运完,除一下即可。当最大流为0时无法运完。

以下是Dinic算法的代码(为什么我那么喜欢用Dinic?因为我个人认为它好写!):

C++ Code:

#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
struct edges{
int from,to,cap,nxt;
}e[20000];
int cnt,n,m,x,head[202],level[202],iter[202];
void addedge(int from,int to,int cap){
e[++cnt]=(edges){from,to,cap,head[from]};
head[from]=cnt;
e[++cnt]=(edges){to,from,0,head[to]};
head[to]=cnt;
}
queue<int>q;
void bfs(int s,int t){
level[s]=0;
q.push(s);
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(e[i].cap>0&&level[v]<0){
level[v]=level[u]+1;
q.push(v);
}
}
}
}
long long dfs(int u,int t,long long f){
if(u==t)return f;
for(int& i=iter[u];i;i=e[i].nxt){
int v=e[i].to;
if(e[i].cap>0&&level[u]<level[v]){
long long d=dfs(v,t,(f>e[i].cap)?(e[i].cap):(f));
if(d){
e[i].cap-=d;
e[i^1].cap+=d;
return d;
}
}
}
return 0;
}
long long max_flow(int s,int t){
long long flow=0;
while(1){
memset(level,-1,sizeof level);
bfs(s,t);
if(level[t]<0)return flow;
memcpy(iter,head,sizeof iter);
long long f;
if(f=dfs(s,t,0x3f3f3f3f3f3f3f3f))flow+=f;
}
}
int main(){
memset(head,0,sizeof head);
memset(e,0,sizeof e);
cnt=1;
scanf("%d%d%d",&n,&m,&x);
while(m--){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
}
long long mf=max_flow(1,n);
if(mf)printf("%lld %d\n",mf,(long long)x/mf+(x%mf>0));else
puts("Orz Ni Jinan Saint Cow!");
return 0;
}

最新文章

  1. 操作系统Unix、Windows、Mac OS、Linux的故事
  2. WinPcap编程(二)
  3. 使用DOM进行xml文档的crud(增删改查)操作&lt;操作详解&gt;
  4. spring多数据源的配置(转)
  5. Java 之 Servlet介绍(Java之负基础实战)
  6. C++头文件用&lt;&gt;还是“” 以及 要加.h还是不加 的问题
  7. maven常用仓库
  8. Python学习笔记(3)-字符串
  9. 数据库oracle 目录结构
  10. org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/domain/book.hbm.xml 联网跑一跑
  11. Orchard Core 模块化
  12. require的定义看不懂【2】
  13. JAVAssist字节码操作
  14. Win7系统计算机中Msvcr100.dll丢失的解决办法
  15. noip2018 爆炸记
  16. Java 接口和抽象类--缺省模式
  17. 求矩阵中各列数字的和 Exercise08_01
  18. django-redis缓存记录
  19. Selenium WebDriver-打开3个网址截图,文件夹用年月日命名,图片用当前时分秒命名
  20. 【调试】JS断点调试

热门文章

  1. POJ 1949 DP?
  2. mysql导入数据,涉及到时间转换,乱码问题解决
  3. 关于目标检测 Object detection
  4. js对象追加到数组里
  5. tab栏切换
  6. dedecmsV5.7自定义图片字段调用方法
  7. DedeCMS搜索结果页面调用自定义字段的方法
  8. [LOJ2607]【NOIP2012】疫情控制
  9. [SCOI2016]美味(可持久化线段树)
  10. BZOJ1567 [JSOI2008]Blue Mary的战役地图(二分+二维hash)