1003. Universal Travel Sites (35)
本题是PAT上顶级一道题目,考察的知识点其实只有一个,最大流问题。用基于广度优先搜索的Edmonds-Karp算法求解。题目意思就是说求解最多能从地球站发送出去的最大人数,在到达目的星球(MAR)上途径每一个行星(不包括MAR)上都没有收留多余游客的能力,到达的游客必须运送出去。那么可以将EAR视为源点s,MAR视为汇点,是一个单源点单汇点的最大流问题。代码如下:
// 1003.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
//#include<iostream>
#include<map>
#include<vector>
#include<queue>
#include<string>
using namespace std;
int fluenceBFS(vector<vector<int>> &edges,int const & planets_n,vector<int>&flue,int st,int en);
int maxFluence(vector<vector<int>>&edges,int const & planets_n,int st,int en);
int main()
{string st_str,en_str;int n;cin>>st_str>>en_str>>n;map<string,int> namesId;int planets_n=0;namesId[st_str]=planets_n++;namesId[en_str]=planets_n++;vector<vector<int>> edges(1010,vector<int>(1010,0));for(int i=0;i<n;++i){string str1,str2;int c;cin>>str1>>str2>>c;map<string,int>::iterator it1 = namesId.find(str1);map<string,int>::iterator it2 = namesId.find(str2);int t1=0,t2=0;if(it1==namesId.end()){t1 = planets_n++;namesId[str1]=t1;}else t1 = it1->second;if(it2 == namesId.end()){t2 = planets_n++;namesId[str2]=t2;}else t2 = it2->second;edges[t1][t2]=c;}int ans = maxFluence(edges,planets_n,0,1);cout<<ans<<endl;return 0;
}
int maxFluence(vector<vector<int>>&edges,int const & planets_n,int st,int en)
{int ans = 0;while(true){vector<int> flue(planets_n,-1);int f = fluenceBFS(edges,planets_n,flue,st,en);if(f==0) break;ans +=f;int now = en;while(now!=st&&now!=-1){int pre = flue[now];edges[pre][now]-=f;edges[now][pre]+=f;now = pre;}}return ans;
}
int fluenceBFS(vector<vector<int>> &edges,int const & planets_n,vector<int>&flue,int st,int en)
{queue<int> Q;Q.push(st);vector<int> f(planets_n,0);f[st]=0x7fffffff;while(Q.empty()==false){int t = Q.front();Q.pop();if(t == en) break;for(int i=0;i<planets_n;++i){if(edges[t][i]!=0&&flue[i]==-1){flue[i]=t;f[i]=min(f[t],edges[t][i]);Q.push(i);}}}return f[en];
}
1003. Universal Travel Sites (35)相关推荐
- PAT顶级 1003 Universal Travel Sites (35分)(最大流)
题目链接: 1003 Universal Travel Sites (35分) 思路: 题目问stationstationstation的最小容量,变相就是问最多能一次性出发多少人,使得过程中不会超过 ...
- 1003 Universal Travel Sites (35 分)(C++)
PAT顶级题解目录 After finishing her tour around the Earth, CYLL is now planning a universal travel ...
- 1003. Universal Travel Sites (35)解题报告
思路 这道题实际上是在问图算法中的最大流问题,使用Edmonds-Karp算法就可以解决. 它的时间复杂度是O(VE^2).具体的算法和证明请参考<算法导论>第六部分图算法第26章最大流. ...
- PAT-Top-1003 Universal Travel Sites (35分)网络流最大流
1003 Universal Travel Sites (35分) 题目传送门:1003 Universal Travel Sites (35分) 一.题目大意 二.解题思路 网络流问题,第一次尝试, ...
- pat顶级1003 Universal Travel Sites (35 point(s))
欢迎访问我的pat顶级题解目录哦 https://blog.csdn.net/richenyunqi/article/details/86751676 题目描述 算法设计 这道题是图论的最大流问题,关 ...
- Python_Example_ Data Structures and Algorithm Analysis 学习/示例
Author: 楚格 2018-11-19 19:05:11 IDE: Pycharm2018.02 Python 3.7 KeyWord : Data Structures and Alg ...
- DPDK vhost-user之packed ring(六)
virtio1.1已经在新的kernel和dpdk pmd中陆续支持,但是网上关于这一块的介绍却比较少,唯一描述多一点的就是这个ppt:https://www.dpdk.org/wp-content/ ...
- Vue封装预约日期插件和发布到npm上
插件代码 <template><div class="subscribe-time" v-show="setting.display"> ...
- android已停止三星,急,android离线打包程序三星下总报 程序 已停止
解开锁屏后,就看到 图片所示的 程序 已停止的提示框,logcat显示如下 11-27 15:33:33.725: I/AndroidRuntime(24861): VM exiting with r ...
最新文章
- js、PHP将分数字符串转换为小数
- 使用Web.Config Transformation配置灵活的配置文件
- mxnet cannot import name 'nd'
- html网页访问WebAPI中的方法遇到的问题
- 拉结尔6月21日服务器维护,拉结尔6月23日停服维护公告
- 北邮OJ 2016网预 - Saber's Conjecture
- 批量插入以及数据存在重复就进行更新操作
- jenkins之qq企业邮箱配置
- iis 回收工作进程时出错的解决办法
- robocopy复制文件_Windows Robocopy命令教程以及以安全方式复制文件的示例
- 微信小程序绘制图表(折线图、柱状图)
- 单片机驱动DM9000
- macOS如何查看pkg安装包中的内部文件
- FDD下行信道估计的一些知识点
- 打开计算机网络自动连接,电脑如何自动连接上网 开机自动拨号连接宽带的方法【步骤】...
- fydeos 安装linux程序,FydeOS安装教程-电脑系统安装手册
- 【Luogu】P8195 小智的疑惑
- HDU 5651 xiaoxin juju needs help 组合数
- 局域网内远程控制开机工具NetWaker
- 计算机视觉论文-2021-06-24