ACM-图
3stone_
别想了,动手吧
展开
-
【ACM】- PAT. A1076 Forwards on Weibo【图的遍历】
题目链接题目分析1、L即表示最多传递L层 2、所给指向关系是反的,即所给结点号为其父节点 3、结点编号 1-N解题思路使用BFS遍历,遍历时记录每个结点的层数注:不能用DFS,会遗漏某些可以更快到达的路径;AC程序(C++)/***********************************@Author: 3stone*@ACM: PAT.A107...原创 2018-08-12 16:04:48 · 171 阅读 · 0 评论 -
【ACM】- HDU-3342 Legal or Not【拓扑排序】
题目链接题目分析判断有向图中是否有环解题思路邻接表存储有向图; 对图进行拓扑排序,若所有顶点都能输出即无环!AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-3342 Legal or Not*@Time: 18/9/10*@IDE: VSCode + clang++**...原创 2018-09-10 21:31:42 · 222 阅读 · 0 评论 -
【ACM】- HDU-2647 Reward 【拓扑排序】
题目链接题目分析拓扑排序失败则输出-1;否则输出总花费解题思路逆拓扑排序:反向保存图信息 每次删边时更新子节点的value值,取 max(父结点值 + 1, 原始值)AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-2647 Reward*@Time: 18/9/10*@...原创 2018-09-10 21:57:36 · 223 阅读 · 0 评论 -
【ACM】- POJ-2367 Genealogical tree 【拓扑排序】
题目链接题目分析输出任一拓扑排序序列即可!解题思路邻接表存储有向图,实现拓扑排序AC程序(C++)/***********************************@ID: 3stone*@ACM: POJ-2367 Genealogical tree*@Time: 18/9/10*@IDE: VSCode + clang++**********...原创 2018-09-10 22:24:18 · 179 阅读 · 0 评论 -
【ACM】- HDU.1863 畅通工程 【最小生成树】
题目链接题目分析解题思路| Kruskal算法 + 并查集 (堆优化priority_queue)| Kruskal算法 + 并查集 (sort())| Prime算法(邻接表版本)| Prime算法 - 邻接表版本题目链接题目分析最小生成树问题,求路径和解题思路算是最小生成树的母题,分别用以下几种方法实现以下: 1、Krus...原创 2018-09-13 16:01:45 · 1171 阅读 · 1 评论 -
【ACM】- HDU-1233 还是畅通工程【最小生成树】
题目链接题目分析最小生成树问题解题思路使用Kruskal算法 + 并查集解决,其他解决方法参看 畅通工程!AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-1233 还是畅通工程*@Time: 18/9/13*@IDE: VSCode + clang++*@KEY:莫要好高...原创 2018-09-13 18:08:31 · 222 阅读 · 0 评论 -
【ACM】- HDU-1879 继续畅通工程 【最小生成树】
题目链接题目分析最小生成树问题;解题思路用Kruskal算法即可,把修通道路(边)的权值(距离)令为0即可;AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-1879 继续畅通工程*@Time: 18/9/13*@IDE: VSCode + clang++ ********...原创 2018-09-13 18:21:30 · 301 阅读 · 0 评论 -
【ACM】- HDU-1875 畅通工程再续 【最小生成树】
题目链接题目分析:距离不能小于10,也不能大于1000解题思路:暴力获取满足条件的小岛之间的距离值;(边值) 把满足条件的边加入边集合,用Kruskal + 并查集 求解即可AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-1875 畅通工程再续*@Time: 18/9/...原创 2018-09-14 16:45:06 · 212 阅读 · 0 评论 -
【ACM】- HDU-3371 Connect the Cities 【最小生成树】
题目链接题目分析最小生成树问题;解题思路把已连通的结点间的距离(边权)令为0,统一加入边集合; 用Kruskal算法 + 并查集解决;Kruskal算法中边的排序用容器priority_queue(堆结构)实现;AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-3371 C...原创 2018-09-14 20:45:47 · 180 阅读 · 0 评论 -
【ACM】- HDU-1162 Eddy`s Picture 【最小生成树】
题目链接题目分析最小生成树问题;解题思路暴力计算任两点的距离(边权); 用Kruskal 算法 + 并查集 解决;AC程序(C++)/***********************************@ID: 3stone*@ACM: HDU-1162 Eddy`s picture*@Time: 18/9/14*@IDE: VSCode + clang...原创 2018-09-14 21:03:50 · 207 阅读 · 0 评论 -
【ACM】- HDU-4857 逃生 【拓扑排序】
题目分析题目对于当有多种排序情况时如何处理没有说得太清楚;并不是每两个可以换序的顶点都要保证编号小的靠前,而是在优先保证1号更靠前的前提下再考虑2号更靠前; 参考博客解题思路结点比较多,邻接表存储; 优先级队列不能用大顶堆,会WA;(当有平行路径时可能出错) 正确做法:把图逆序,最后输出也逆序,priority_queue<>用原始的大顶堆(即每次选择编号较大的入队)...转载 2018-09-10 21:16:45 · 227 阅读 · 0 评论 -
【ACM】- HDU-1285 确定比赛名次 【拓扑排序】
题目链接题目分析实现拓扑排序,多种排序结果时,输出编号最小的那个解题思路1、用邻接表存储有向图,实现拓扑排序即可 2、实现过程中,存储入度为0点的容器选用priority_queue<int, vector<int>, greater<in> >,即用堆实现 每次在多个入度为零的顶点中选择最小编号的那个!AC程序(C++)/...原创 2018-09-10 20:03:10 · 183 阅读 · 0 评论 -
【ACM】UVA-10305 Ordering Tasks 【拓扑排序】
题目链接题意分析实现拓扑排序解题思路用邻接表存储有向图,按拓扑排序算法解决即可!AC程序(C++)/***********************************@ID: 3stone*@ACM: UVA-10305 Ordering Tasks*@Time: 18/9/10*@IDE: DEV C++ 5.10 *@KEY:莫要好高骛远,你先成为...原创 2018-09-10 19:43:57 · 119 阅读 · 0 评论 -
【ACM】- PAT. A1013 Battle Over Cities 【图的遍历】
题目链接题目分析1、无向图 2、节点编号1-N 3、删去一个结点,查看变成几个连通块解题思路每次删除删遍历,看剩余接个连通块(DFS的次数)AC程序(C++)/***********************************@Author: 3stone*@ACM: PAT.A1013 Battle Over Cities*@Time: 18/8/1...原创 2018-08-12 21:21:33 · 257 阅读 · 0 评论 -
【ACM】- PAT.A1021 Deepest Root【图的遍历】
题目链接题目分析1、判断图是否为一棵树,是则输出最深根,不是则输出连通块数 2、节点编号1-N 3、无向图解题思路1、DFS判断 是否为一棵树 2、寻找最大根: (法一)暴力搜索 结点数10000,则两重循环复杂度会达到10^8量级, 时间限制为1500ms,1s内计算次数一般为10^7-10^8, 提交发现,最大测试点花了将近1100...原创 2018-08-13 10:50:22 · 353 阅读 · 1 评论 -
【ACM】- PAT. 1018 Public Bike Management 【图 - 最短路径】
题目链接题目分析给出结点信息,输出最短路径; 总站编号为0,其他站点编号为1-N多条最短路径时,其他标尺: 在最短路径过程中,必须把每个结点的权值调整到题目要求的最佳;标尺一:选择需要从总站带出最少量的路径标尺二:仍有多条,则选择需要带回最少量的路径【陷阱】:不能在返程过程中才调整结点,去的时候就需要调整好数量,否则两个测试点错误(25`)解题思路用Dijk...原创 2018-08-26 10:52:38 · 206 阅读 · 0 评论 -
【ACM】- PAT. A1072 Gas Station 【图 - 最短路径】
题目链接题目分析给出M个加油站待选点和N个房屋,要求加油站距离最近的房子越远越好;(即最小距离中最大的那个) 当有相同解时,选择平均距离更小的那一个,若还有多解,选择编号更小的那一个民房编号 1~N(1000); 气站编号G1~GM(10);解题思路对于所有候选站点,依次执行如下步骤: Dijkstra()算法查找最短路径,只需记录到每个结点的最短距离即可,不需要保存路径;...原创 2018-08-26 15:01:40 · 416 阅读 · 0 评论 -
【ACM】- PAT. A1087All Roads Lead to Rome 【图 - 最短路径】
题目链接题目分析给出无向图,边和结点都有权重,查找最短路径; 当最短路径有多条时,选择结点权重总和最大的那条,若还有多条,选择平均结点权重最大的一条路径;解题思路使用Dijkstra()算法 查找最短路径; 本题满足最优子结构,故对于多条最短路径,可以在查找过程中就判断那条最佳(判断稍复杂), 也可以保存所有路径,最后筛选!注意点: 结点是以三位大写字母组成的名字给...原创 2018-08-26 15:41:34 · 313 阅读 · 0 评论 -
【ACM】- PAT. A1034 Head of a Gang 【图的遍历】
题目链接题目分析寻找图中满足条件的连通块数; 1、无向图,需要多次累加权值 2、Gang: 结点数大于2 且 总时长 > K 3、head: Gang中时长最大的结点 4、题目保证每个Gang中head唯一 5、输出按head字典序排序 6、通话记录上限为1000,则结点数上限为2000(因此最好用邻接表实现)解题思路1、结点名字:map<string,...原创 2018-08-25 14:49:42 · 200 阅读 · 0 评论 -
【ACM】- PAT. A1003 Emergency 【图 - 最短路径】
题目链接题目分析:输入结点信息,求最短路径;路径多条时,根据点的权重,输出路径中点的累加权重最大的那条解题思路:在原有Dijkstra()算法的基础上,新增数组w[],记录从起点到某点的累计点权, 当路径长度相同时,更新为权重更大的即可/***********************************@ID: 3stone*@ACM: PAT.A1003 Emerg...原创 2018-08-25 16:57:17 · 1003 阅读 · 1 评论 -
【ACM】- PAT. A1030 Travel Plan 【图 - 最短路径】
题目链接题目分析:结点编号 0 ~ N-1 题目满足最优子结构,可以直接得出最佳最短路径,也可以先保存所有最短路径,最后统一筛选!思路一:直接在遍历Dijkstra()过程中选出最佳最短路径/***********************************@ID: 3stone*@ACM: PAT.A1030 Travle Plan*@Time: 18/8...原创 2018-08-25 18:24:02 · 340 阅读 · 0 评论 -
【ACM】- POJ-1861 Network 【最小生成树】
题目链接题目分析最小生成树问题,不过要求得不是路径和,而是使生成树中的最长边最小; | 细节: 1、结点编号1~N 2、注意题目给的测试数据有BUG;解题思路Kruskal算法 + 并查集;AC程序(C++)/***********************************@ID: 3stone*@ACM: POJ-1861 Network*@Time...原创 2018-09-15 16:27:09 · 237 阅读 · 0 评论 -
【ACM】- HDU-4313 Matrix 【最小生成树】
题目链接题目分析:N个结点N-1条边连接本身是一棵生成树;需要切断指定的几个结点之间的两两联系,使切断边权值之和最小; 节点编号0 ~ N-1 数据比较大,必须用long long 型存储累加结果,否则WA解题思路:【参考解题报告】 需切断K个指定结点之间的联系,即分成K个独立的连通块; 用kruskal算法,不过长边优先选择(priority_queue实现大顶堆); ...原创 2018-09-15 15:00:24 · 283 阅读 · 0 评论