博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hunnu 11545小明的烦恼——找路径 (最大流)
阅读量:6790 次
发布时间:2019-06-26

本文共 2195 字,大约阅读时间需要 7 分钟。

小明的烦恼——找路径 
Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB
Total submit users: 45, Accepted users: 37
Problem 11545 : No special judgement
Problem description
  小明真的是个非常厉害的人,每当老师有什么事时,总是会找到小明,二小明也总能解决,所以老师决定给小明一个奖励,给他额外的假期。小明当然非常高兴。由于小明最终能够如愿的出去旅游了。小明旅游的第一站到了漂亮的长沙,到了长沙当然免不了要去參观古色古香的的湖南师范大学了。小明在师大校园里愉快的玩耍。不时瞅一眼从他身边经过的美女,也感叹这个校园古老建筑带给他的震撼。

临近中午了。小明走到了理学院大门前,瞬间就被吸引了,于是就走了进去,在理学院的一个教室外面。小明看到有个带眼睛的男生在皱眉头,好像是被什么难题卡住了,小明的慈悲之心油然而生,于是就走了进去。

于是题目就来了:

有N个城市,有些城市有道路相连。但这些道路中间并没有加油站(每一个城市里面有加油站能够补给),如今有个project师要找到T条不同的路径从1号城市到N号城市,两条路径是不同的当且仅当不经过同样的边。如今告诉你project师的汽车的最大载油量C和经过每条道路所要消耗的油量。问你这个project师能不能完毕任务。

Input
  由多组case:
每组case第一行有4个整数N。M。T,C。N<=200;C<=1000000;
然后有M行。每一行有3个整数,a,b,c,代表从a城市到b城市须要c的油量。c<=1000000;假设两个城市之间有多条边,则视为不同的边。
Output
  对于每一个case:
假设project师可以完毕任务,输出YES,不然输出NO。

Sample Input
7 9 2 51 2 22 3 53 7 51 4 14 3 14 5 75 7 11 6 36 7 37 9 2 41 2 22 3 53 7 51 4 14 3 14 5 75 7 11 6 36 7 3
Sample Output
YESNO
解题:如果每条可行边的流限最大为1,则依据网络流的性质:每一个点的 流进量==流出量,守恒。所以一条边仅仅能属于一条路。
#include
#include
#include
#include
using namespace std;const int N = 225;bool mapt[N][N];int pre[N],sNode,eNode,n;bool searchPath(){//找一条增广路 queue
q; bool vist[N]={0}; pre[sNode]=sNode; vist[sNode]=1; q.push(sNode); while(!q.empty()){ int u=q.front(); q.pop(); for(int v=2; v<=n; v++) if(mapt[u][v]&&vist[v]==0){ vist[v]=1; pre[v]=u; if(v==eNode) return true; q.push(v); } } return false;}bool maxflow(int T){ while(searchPath()){ int u,v; T--; if(T<=0)return true; v=eNode; while(v!=sNode){ u=pre[v]; mapt[u][v]=0; mapt[v][u]=1;//能够回流 v=u; } } return false;}int main(){ int M,T,C,a,b,c; while(scanf("%d%d%d%d",&n,&M,&T,&C)>0){ memset(mapt,false,sizeof(mapt)); sNode=1; eNode=n; while(M--){ scanf("%d%d%d",&a,&b,&c); if(c<=C) mapt[a][b]=1;//每条边的最大流限。 } if(T==0||maxflow(T)) printf("YES\n"); else printf("NO\n"); }}

转载地址:http://hzogo.baihongyu.com/

你可能感兴趣的文章
使用 hydra 破解路由器密码
查看>>
小黑小波比.sql语句查询0:全部;1:类型A;2:类型B
查看>>
@PathVariable 包含斜杠
查看>>
思达报表工具Style Report基础教程—参数化查询
查看>>
为什么用ls和du显示出来的文件大小有差别?
查看>>
如何依据激励对象和公司状况,选择正确的股权激励方式?
查看>>
Android apktool更新版本后遇到的一些问题
查看>>
Java面试题之九 (转) 二
查看>>
k8s 安装 + docker
查看>>
servlet 产生验证码
查看>>
java里怎样在客户端获取response的Cookie
查看>>
quick lua下自定义事件处理
查看>>
tomcat 启动报 操作系统找不到已输入的环境选项
查看>>
10进制转换, 输出字符
查看>>
svg在线生成器地址
查看>>
Fikker 自建CDN的安装说明
查看>>
生产环境修改PostgreSQL表索引对应的表空间
查看>>
浅谈C++多态性
查看>>
Linux用户和组管理
查看>>
Javascript模块化编程
查看>>