本题是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)相关推荐

  1. PAT顶级 1003 Universal Travel Sites (35分)(最大流)

    题目链接: 1003 Universal Travel Sites (35分) 思路: 题目问stationstationstation的最小容量,变相就是问最多能一次性出发多少人,使得过程中不会超过 ...

  2. 1003 Universal Travel Sites (35 分)(C++)

    PAT顶级题解目录​​​​​​​ After finishing her tour around the Earth, CYLL is now planning a universal travel ...

  3. 1003. Universal Travel Sites (35)解题报告

    思路 这道题实际上是在问图算法中的最大流问题,使用Edmonds-Karp算法就可以解决. 它的时间复杂度是O(VE^2).具体的算法和证明请参考<算法导论>第六部分图算法第26章最大流. ...

  4. PAT-Top-1003 Universal Travel Sites (35分)网络流最大流

    1003 Universal Travel Sites (35分) 题目传送门:1003 Universal Travel Sites (35分) 一.题目大意 二.解题思路 网络流问题,第一次尝试, ...

  5. pat顶级1003 Universal Travel Sites (35 point(s))

    欢迎访问我的pat顶级题解目录哦 https://blog.csdn.net/richenyunqi/article/details/86751676 题目描述 算法设计 这道题是图论的最大流问题,关 ...

  6. 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 ...

  7. DPDK vhost-user之packed ring(六)

    virtio1.1已经在新的kernel和dpdk pmd中陆续支持,但是网上关于这一块的介绍却比较少,唯一描述多一点的就是这个ppt:https://www.dpdk.org/wp-content/ ...

  8. Vue封装预约日期插件和发布到npm上

    插件代码 <template><div class="subscribe-time" v-show="setting.display"> ...

  9. android已停止三星,急,android离线打包程序三星下总报 程序 已停止

    解开锁屏后,就看到 图片所示的 程序 已停止的提示框,logcat显示如下 11-27 15:33:33.725: I/AndroidRuntime(24861): VM exiting with r ...

最新文章

  1. js、PHP将分数字符串转换为小数
  2. 使用Web.Config Transformation配置灵活的配置文件
  3. mxnet cannot import name 'nd'
  4. html网页访问WebAPI中的方法遇到的问题
  5. 拉结尔6月21日服务器维护,拉结尔6月23日停服维护公告
  6. 北邮OJ 2016网预 - Saber's Conjecture
  7. 批量插入以及数据存在重复就进行更新操作
  8. jenkins之qq企业邮箱配置
  9. iis 回收工作进程时出错的解决办法
  10. robocopy复制文件_Windows Robocopy命令教程以及以安全方式复制文件的示例
  11. 微信小程序绘制图表(折线图、柱状图)
  12. 单片机驱动DM9000
  13. macOS如何查看pkg安装包中的内部文件
  14. FDD下行信道估计的一些知识点
  15. 打开计算机网络自动连接,电脑如何自动连接上网 开机自动拨号连接宽带的方法【步骤】...
  16. fydeos 安装linux程序,FydeOS安装教程-电脑系统安装手册
  17. 【Luogu】P8195 小智的疑惑
  18. HDU 5651 xiaoxin juju needs help 组合数
  19. 局域网内远程控制开机工具NetWaker
  20. 计算机视觉论文-2021-06-24

热门文章

  1. matlab实现透视变换
  2. C++ make_shared() shared_ptr()用法(七)
  3. 解决app欢迎页面白屏问题
  4. JS 三个值求最大值
  5. 企业邮箱注册流程解析:分享如何申请注册企业邮箱
  6. html 文本框css设置边框圆角
  7. 【Java从零到架构师第二季】【14】AJAX
  8. 微博引流到公众号继续阅读,需要跳转链接到微信打开继续付费阅读,如何设置这个跳转链接呢?
  9. 服务器怎么和本地文件同步,本地与服务器文件同步
  10. 一个合格程序员的标准(转)