【codevs1034】 家园
http://codevs.cn/problem/1034/ (题目链接)
题意
给出一张n个点的图,有m架飞船按照固定的航班运行,没单位时间移动一次,并且没收航班都有自己的容纳量。问从0号点将K个人运输到-1号点需要多长时间。
Solution
看到这个题目后非常纠结,如果把时间因素去掉,那么就是一个典型的网络流,那么我们能不能将将时间与建图结合在一起呢?
答案是可以的。我们可以枚举当前的时间,并构建按时间分层的图,新建源点S连向0时刻的0号点,汇点连向每个时刻的-1号点,只要还有人没有到达-1汇点,那么就继续增加时间。
细节
mdzz样例有毒啊!负号竟然是全角的,我还调了1个多小时。。
注意判断无解的情况。
代码
// codevs1034
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=100010;
struct edge {int to,next,w;}e[maxn<<1];
int f[100][100],h[100],r[100],es,et,n,m,K,T,cnt=1,ans;
int head[maxn],d[maxn]; void link(int u,int v,int w) {
e[++cnt]=(edge){v,head[u],w};head[u]=cnt;
e[++cnt]=(edge){u,head[v],0};head[v]=cnt;
}
void build() {
for (int i=1;i<=m;i++) link(n*(T-1)+f[i][(T-1)%r[i]],n*T+f[i][T%r[i]],h[i]);
for (int i=1;i<=n;i++) link(n*(T-1)+i,n*T+i,inf);
link(n*T+n,et,inf);
}
bool bfs() {
memset(d,-1,sizeof(d));
queue<int> q;q.push(1);d[1]=0;
while (!q.empty()) {
int x=q.front();q.pop();
for (int i=head[x];i;i=e[i].next) if (e[i].w && d[e[i].to]<0) {
d[e[i].to]=d[x]+1;
q.push(e[i].to);
}
}
return d[et]>0;
}
int dfs(int x,int f) {
if (x==et || f==0) return f;
int w,used=0;
for (int i=head[x];i;i=e[i].next) if (e[i].w && d[e[i].to]==d[x]+1) {
w=dfs(e[i].to,min(e[i].w,f-used));
used+=w;
e[i].w-=w;e[i^1].w+=w;
if (used==f) return used;
}
if (!used) d[x]=-1;
return used;
}
void Dinic() {
while (bfs()) K-=dfs(es,inf);
}
int main() {
scanf("%d%d%d",&n,&m,&K);
es=1;et=100000;
for (int i=1;i<=m;i++) {
scanf("%d%d",&h[i],&r[i]);
for (int j=0;j<r[i];j++) {
scanf("%d",&f[i][j]);
if (++f[i][j]==0) f[i][j]=n+2;
}
}
n+=2;T=0;
link(n,et,inf);
while (++T) {
build();
Dinic();
if (K<=0) break;
if (T>1000) {printf("0");return 0;}
}
printf("%d",T);
return 0;
}
【codevs1034】 家园的更多相关文章
- 【Codevs1034】家园(最大流,裂点)
题意:由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177年冬由于未知的原因,地球环境发生了连锁崩溃,人 ...
- 新萝卜家园GHOST WIN7系统32,64位极速装机特别版
系统来自:系统妈:http://www.xitongma.com 新萝卜家园GHOST win7系统32位极速装机特别版 V2016年3月 系统概述 新萝卜家园ghost win7系统32位极速装机特 ...
- 萝卜家园32位和64位Win7系统Ghost版
新萝卜家园32位Win7系统Ghost版Sp1,官方旗舰版采用Windows7 SP1简体中文旗舰版32位(MSDN官方发布正式版原版ios镜像)制作,并能够完美自动激活,采用自由天空驱动包,解决部分 ...
- 洛谷2754 [CTSC1999]家园
题目链接:[CTSC1999]家园 这个题目我们不是很好在做网络流的时候判断是否有解,因此我们考虑分开来做 对于是否有解的判断,我们唯一需要解决的是飞船的周期停泊问题,对于这个问题,我们可以用并查集解 ...
- 新萝卜家园GHOST WIN7系统32,64位官方版下载
来自系统妈:http://www.xitongma.com 新萝卜家园GHOST win7系统64位官方经典版 V2016年3月 系统概述 新萝卜家园ghost win7系统64位官方经典版加快“网上 ...
- 新萝卜家园GHOST WIN7系统3专业装机版
系统来自系统妈:http://www.xitongma.com/ 系统概述 萝卜家园GHOST win7 64位装机旗舰版加快“网上邻居”共享速度:取消不需要的网络服务组件,系统支持Windows安装 ...
- 新萝卜家园Ghost版Win10系统X32极速装机版2015年4月
来自:系统妈,系统下载地址:http://www.xitongma.com/windows10/2015-03-30/6638.html 新萝卜家园Ghost Win10 X32 10041电脑城极速 ...
- Centos7服务器搭建网络家园和论坛
环境:Centos7 工具:mysql,php,httpd 目的:熟练掌握httpd服务器搭建和个服务器之间的配合. 有兴趣的朋友可以来实践一下,我会提供各种源码进行搭建. 网络家园和论坛源码:htt ...
- http://ajax.open-open.com/ ajax开源家园
http://ajax.open-open.com/ 本站为广大OPEN爱好者搭建了一个OPEN家园,大家可以方便快捷地发布日志.上传照片,分享生活中的精彩瞬间:与好友一起玩转游戏,增加好友感情:创建 ...
随机推荐
- 兼容利器之X-UA-Compatible
文档兼容模式 不同浏览器之间经常产生各种奇异的现象,为了解决这些问题,使用以下方法,发现很多问题自动消失不见了 <meta http-equiv="X-UA-Compatible&qu ...
- .net混淆、反编译工具调查
常用的工具列表[比较常见的] 混淆器.加密 Dotfuscator VS默认带的工具,不过是个社区版 强度不大 dotNET Reactor 使用了NativeCode 和混淆的形式 Xenocode ...
- 使用PHP获取根域名的方法!
/** * 取得根域名 * @param type $domain 域名 * @return string 返回根域名 */ function GetUrlToDomain($domain) { $r ...
- 启动PPT的时候一直配置vs2013的问题解决
前几天装了VS2013,结果发现每次启动powerpoint都要配置vs2013,虽然时间花的不多,可我看的就是碍眼,我都想把VS2013卸载来解决了.后来抱着试下的态度竟然在google上找到了解决 ...
- 转:用WCAT进行IIS压力测试
Microsoft的Web容量分析工具(WCAT) 是测试你的客户-服务器网络配置的必备工具.这个工具在你的网络上对多种工作量的场景进行仿真,允许你确定你的网络和服务器的最佳配置.WCAT是专门为 评 ...
- nginx认证配置
rpm -qa|grep httpd-tools yum install httpd-tools ###这样不仅可以使用ab工具,还可以使用htpasswd工具了 虚拟主机 ->&g ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- eclipse/intellij idea 远程调试hadoop 2.6.0
很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试 ...
- 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...
- js的浅拷贝和深拷贝
转载:http://www.jb51.net/article/91906.htm //深拷贝,并且把合并后的值放到第二个参数里 function deepCopy(p, c) { var c = c ...