小明的烦恼——找路径 
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 5
1 2 2
2 3 5
3 7 5
1 4 1
4 3 1
4 5 7
5 7 1
1 6 3
6 7 3
7 9 2 4
1 2 2
2 3 5
3 7 5
1 4 1
4 3 1
4 5 7
5 7 1
1 6 3
6 7 3
Sample Output
YES
NO
解题:如果每条可行边的流限最大为1,则依据网络流的性质:每一个点的 流进量==流出量,守恒。所以一条边仅仅能属于一条路。
#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
using namespace std;
const int N = 225; bool mapt[N][N];
int pre[N],sNode,eNode,n; bool searchPath(){//找一条增广路
queue<int>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");
}
}

最新文章

  1. maven整理——初步
  2. 算法系列:寻找最大的 K 个数
  3. arcgis打开图层后右下角坐标小数点位数调整
  4. Backbone学习笔记一Backbone中的MVC
  5. 第二百九十四天 how can I 坚持
  6. (三)Harbor使用OpenLDAP认证登陆
  7. 欢迎大家来到DevLegal的博客
  8. oracle连接连表查询时,两表的连接字段类型不一致的时候,会导致ora 01722无效数字错误,这时候需要转换
  9. 3ds max学习笔记(十六)-- 摄像机
  10. 如何利用”七牛云”在UEditor实现图片的上传和浏览
  11. 搭建SpringBoot、Jsp支持学习笔记
  12. MT【181】横穿四象限
  13. 【Spark】Spark-性能调优-系列文章
  14. mpvue小程序开发入门级指南
  15. python3 django连接mysql,同步表结构
  16. js 特效
  17. Cortex-A
  18. jquery 获取当前时间加180天
  19. InstallShield的工程类型的选择
  20. 关于OpenCV的stitching使用

热门文章

  1. JavaLearning:日期操作类
  2. 图解hdu5301Buildings
  3. hdu 1875 畅通project再续(kruskal算法计算最小生成树)
  4. vue2留言板
  5. 10.axis实现webservices分布式通信
  6. js设计模式--------基本概念的理解
  7. Web跨域问题基础
  8. ajax关于主流中的异类:应对Opera(四)
  9. LuoguP2762 太空飞行计划问题(最大权闭合子图,最小割)
  10. NB大了,增强现实走进安防行业了!竟然还有智能家居的规划!