hunnu 11545小明的烦恼——找路径 (最大流)

2024-05-12 20:32

本文主要是介绍hunnu 11545小明的烦恼——找路径 (最大流),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小明的烦恼——找路径 
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个城市,有些城市有道路相连,但这些道路中间并没有加油站(每个城市里面有加油站可以补给),现在有个工程师要找到T条不同的路径从1号城市到N号城市,两条路径是不同的当且仅当不经过相同的边,现在告诉你工程师的汽车的最大载油量C和经过每条道路所要消耗的油量,问你这个工程师能不能完成任务。
Input
  由多组case:
每组case第一行有4个整数N,M,T,C,N<=200;C<=1000000;
然后有M行。每一行有3个整数,a,b,c,代表从a城市到b城市需要c的油量。c<=1000000;如果两个城市之间有多条边,则视为不同的边。
Output
  对于每个case:
如果工程师能够完成任务,输出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");}
}


这篇关于hunnu 11545小明的烦恼——找路径 (最大流)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983664

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使