
图论
youth.lin
a tyro at CS and NLP.
展开
-
PAT 1013 Battle Over Cities(并查集的应用)
题意https://www.patest.cn/contests/pat-a-practise/1013解题思路刚开始的思路是,通过判断去除顶点的度和它所连接顶点是不是只依赖于它,来做统计。但是举了几个复杂例子后抛弃了用顶点的度做简单运算的想法,而是判断去除顶点后剩余的连通分量有多少个。既然是连通分量,那先考虑的就是并查集了。具体实现上,对于每个查询的顶点stop,为这张图构造去除它之后的所有连通分原创 2017-05-27 00:01:59 · 501 阅读 · 0 评论 -
hdu 2962 Trucking(二分+最短路)
AC代码#include <iostream>#include <algorithm>#include <queue>#include <vector>using namespace std;const int maxn = 1005, INF = 1 << 27;typedef pair<int, int> P; //first代表距离,second代表顶点编号int n, road;原创 2017-07-01 19:54:24 · 477 阅读 · 0 评论 -
HDU 2544 最短路(Floyd/Dijkstra/SPFA)
题目http://acm.hdu.edu.cn/showproblem.php?pid=2544 题意:求从源点1到终点N的单源最短路径。解题思路单源最短路径的裸题,用来复习floyd和dijkstra。AC代码Floyd算法,复杂度O(n^3)#include <iostream>#include <algorithm>using namespace std;const int max原创 2017-07-01 16:32:34 · 283 阅读 · 0 评论 -
POJ 3255 RoadBlocks(次短路+dijkstra变形)
题目http://poj.org/problem?id=3255 题意:求从起点到终点的次短路。次短路是指比最短路长的路径中,相对最短的那一条。解题思路《挑战程序设计竞赛》中的一道题。 引用别人的博文->图论算法小结:次短路的求解 首先来回顾一下Dijkstra算法的原理:首先把所有结点的最短距离设置为无穷大,然后令d[0]=0。接下来,每次都找到最短路已经确定的经典,更新从它出发的相邻原创 2017-06-30 14:37:19 · 360 阅读 · 0 评论 -
PAT 1030 Travel Plan(单源最短路径+优化Dijkstra)
题目https://www.patest.cn/contests/pat-a-practise/1030 题意:给出每座城市之间高速公路的长度和花费,求从给定起点到终点的最短路径并输出,若有多条最短路径,记录花费最小的那条。解题思路本题是单源最短路径的简单变形。不仅要考虑距离,还要考虑花费。关于单源最短路径,详见之前的一篇博客:PAT 1003 Emergency(单源最短路径+Dijkstr原创 2017-06-17 19:48:19 · 327 阅读 · 0 评论 -
PAT 1034 Head of a Gang(图遍历+BFS)
题目https://www.patest.cn/contests/pat-a-practise/1034 题意:给出1000条以内的通话记录A B和权值w,如果一个团伙人数超过2人并且通话总权值超过阈值k,令团伙里面的自身权值的最大值为头目,输出所有满足条件的团伙的头目,和他们团伙里面的人数。解题思路数据结构邻接表存放图的邻接关系,weight数组存放节点权重邻接节点 = 它通话过的所有节点原创 2017-06-29 11:55:17 · 348 阅读 · 0 评论 -
PAT 1018 Public Bike Management(最短路径+DFS)
题目 https://www.patest.cn/contests/pat-a-practise/1018 题意:自行车管理中心PBMC监控所有站点的实时自行车量,每个站点的最大容纳量都是Cmax,最优状态为Cmax/2。当一个站点为Empty或者Full的时候会向PBMC报告,这时候PBMC需要选择一条到达该站点耗时最短的路径,并且将沿路经过的站点都调整为最优状态。求解这些最短路径中原创 2017-06-06 10:20:04 · 508 阅读 · 0 评论 -
PAT 1021 Deepest Root(树的直径+BFS+并查集)
题目https://www.patest.cn/contests/pat-a-practise/1021 题意:给出一张图,判断该图能否形成一棵树,若能则求出树的最长简单路(树的直径),否则求出连通分量的个数。解题思路本题是树的直径+并查集的应用,似乎是某C9的机试题之一。解决这道题的整体思路是: 1. 先通过并查集判断连通分量的个数,若连通分量只有1个就说明不存在森林; 2. 对剩下原创 2017-06-16 14:29:44 · 395 阅读 · 0 评论 -
UVa 10004 Bicoloring(二分图判定+DFS)
原题地址https://vjudge.net/problem/UVA-10004解题思路稍等~AC代码#include <iostream>#include <vector>#include <cstring>using namespace std;const int maxn = 205;vector<int> graph[maxn];int color[maxn], n;bool d原创 2017-05-20 15:28:41 · 360 阅读 · 0 评论 -
PAT 1003 Emergency(单源最短路径+Dijkstra)
原题地址https://www.patest.cn/contests/pat-a-practise/1003 题意:给定N个城市以及M条城市之间的道路,每座城市有自己的权重city[i],每条道路也有自己的权重cost[i][j],求源顶点v0到目标顶点vt的最短路径的数量,以及沿着最短路径的累加顶点权重的最大值。解题思路本题是单源最短路径的变形题,寻找单源最短路径一般用Dijkstra算法就原创 2017-05-07 13:55:11 · 1435 阅读 · 3 评论