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

欢迎访问我的pat顶级题解目录哦 https://blog.csdn.net/richenyunqi/article/details/86751676

题目描述

pat顶级1003 Universal Travel Sites (35 point(s))题目描述

算法设计

这道题是图论的最大流问题,关于该问题的解决算法有很多,比较容易掌握的是Edmonds-Karp算法。关于该问题和Edmonds-Karp算法展开起来比较复杂,读者可自行查阅相关资料。我在本博客中直接附上解决本题的代码,代码参考了刘汝佳的《算法竞赛与入门经典(第2版)》关于Edmonds-Karp算法的实现,其中添加了足够充分的注释,读者也可以参考我的代码进行理解。

注意点

图中边的描述最多有500行,最多有1000个点,所以相关数组至少要开到1000

C++代码

#include<bits/stdc++.h>
using namespace std;
struct Edge{
   //边类
    int from,to,cap,flow;
    Edge(int f,int t,int c,int fl):from(f),to(t),cap(c),flow(fl) {
   }
};
unordered_map<string,int>trans;//将字符串转换为数字,由0开始编号
vector<Edge>edges;//储存边
vector<int>graph[1005];//整个图,其中graph[i][j]表示结点i的第j条边在edges数组中的序号
int a[1005],p[1005];//a数组表示源点到结点a[i]的残量,p数组表示最短路树上到达结点p[i]的边在edges数组中的序号
void 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值