洛谷 P1343 地震逃生
来源:互联网 发布:新能源汽车产销数据 编辑:程序博客网 时间:2024/05/17 10:40
P1343地震逃生
题目描述
汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边。1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完。
输入输出格式
输入格式:
第一行3个整数n,m,x(x<2^31,n<=200,m<=2000);以下m行,每行三个整数a,b,c(a1,a<>b,0描述一条边,分别代表从a点到b点有一条边,且可容纳c名学生。
输出格式:
两个整数,分别表示每批最多能运出多少个学生,x名学生分几批才能运完。如果无法到达目的地(n号点)则输出“Orz Ni Jinan Saint Cow!”
输入输出样例
输入样例#1:
6 7 71 2 11 4 22 3 14 5 14 3 13 6 25 6 1
输出样例#1:
3 3
说明
【注释】
比如有图
1 2 100
2 3 1
100个学生先冲到2号点,然后1个1个慢慢沿2-3边走过去
18神牛规定这样是不可以的……
也就是说,每批学生必须同时从起点出发,并且同时到达终点
1 // 最大流 一遍A 今晚RP and mood++ 2 #include<iostream> 3 #include<queue> 4 #include<cstring> 5 #include<cstdio> 6 using namespace std; 7 #define maxn 210 8 #define maxm 2010 9 #define INF 1e910 struct Edge{11 int v,w,next;12 }e[maxm*2];13 int head[maxn],m,n,X,tot=1,ans,dep[maxn];14 void Add_Egde(int u,int v,int w){15 e[++tot].v=v;e[tot].w=w;16 e[tot].next=head[u];head[u]=tot;17 e[++tot].v=u;e[tot].w=0;18 e[tot].next=head[v];head[v]=tot;19 }20 queue<int>q;21 bool BFS(int s,int t){22 while(!q.empty())q.pop();23 memset(dep,-1,sizeof dep );24 dep[s]=0;q.push(s);25 while(!q.empty()){26 int u=q.front();q.pop();27 for(int i=head[u];i;i=e[i].next){28 int v=e[i].v,w=e[i].w;29 if(dep[v]==-1&&w){30 dep[v]=dep[u]+1;31 if(v==t)return true;32 else q.push(v);33 }34 }35 }36 return false;37 }38 int DFS(int u,int flow){39 int ret=0;40 if(u==n) return flow;41 for(int i=head[u];i;i=e[i].next){42 int v=e[i].v,w=e[i].w;43 if(dep[v]==dep[u]+1&&w){44 int x=DFS(v,min(flow-ret,w));45 ret+=x;46 e[i].w-=x;47 e[i^1].w+=x;48 }49 }50 return ret;51 }52 int Dinic(int s,int t){53 while(BFS(s,t))ans+=DFS(1,INF);54 return ans;55 }56 int main(){57 scanf("%d%d%d",&n,&m,&X);58 for(int i=1,u,v,w;i<=m;i++){59 scanf("%d%d%d",&u,&v,&w);60 Add_Egde(u,v,w);61 }62 int max_flow=Dinic(1,n);63 if(max_flow==0){64 printf("Orz Ni Jinan Saint Cow!\n");65 return 0;66 }67 if(X%max_flow==0){68 printf("%d %d\n",max_flow,X/max_flow);69 }70 else printf("%d %d\n",max_flow,X/max_flow+1); 71 return 0;72 }
0 0
- 洛谷 P1343 地震逃生
- 【u033】地震逃生
- P1341 地震逃生
- 地震逃生自救与常识
- 地震中逃生十大法则
- 5.12汶川地震,19楼逃生
- 地震中逃生十大法则
- 地震中逃生十大法则
- 地震中逃生的大法则
- 用云计算,为地震逃生争取三十秒
- 逃生
- 逃生
- 逃生
- 逃生
- 逃生
- 逃生
- 地震
- 地震
- [网络流24题] COGS 750 栅格网络流
- SpringMVC之组合注解@GetMapping
- 数组与链表的区别
- Codevs 1710 == POJ 1190 生日蛋糕 == 洛谷P1731
- NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题
- 洛谷 P1343 地震逃生
- Ubuntu配置JDK
- 洛谷 P1525 关押罪犯
- BZOJ 1877: [SDOI2009]晨跑
- Vijos P1007 绕钉子的长绳子
- 洛谷 P2916 [USACO08NOV]为母牛欢呼Cheering up the C…
- 洛谷 PT2 First Step (ファーストステップ)
- CDQ 学习笔记
- offsetof与container_of宏[总结]