图论
文章平均质量分 66
Link_Ray
这个作者很懒,什么都没留下…
展开
-
codeforceECround52div2DThree Pieces(图论)
题意 给定一个n∗nn*nn∗n的网格,每个网格都由1,2,3,4,…,n∗n1,2,3,4,\dots ,n*n1,2,3,4,…,n∗n中的数字填充,一开始从1号格开始走,有三种走法。 走日字格 横走或竖走(走的格子不限) 沿着对角线走(走的格子不限) 当每次切换不同的行走方式时,行走次数+1,问从1号到2号再到3号…一直到n∗nn*nn∗n号格子的最少行走次数是多少,当行走次数相同,那最...原创 2018-10-24 09:22:58 · 189 阅读 · 1 评论 -
tarjan求强连通分量
强连通分量定义 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 tarjan求强连通分量 定义以下几个变量 dfn: 时间变量,代表给结点第几个被访问。 Dfn[u]: 结...原创 2018-11-23 15:48:19 · 507 阅读 · 0 评论 -
Uva 11374机场快线 最短路(枚举一条边)
题意 在一张图中有两种路线,一种是经济线,一种是商业线,经济线可以随便走,但是商业线只能走一次。现在问从起点到终点的最短路是什么。 题解 预处理起点和终点最短路。 设起点为S,终点为E。 枚举每一条商业线(u,v),现在需要快速知道S->u的最短路径,v->E的最短路径,这样就可以得出选这条商业线的最短路。解决的办法是预处理,以起点和终点分别开始跑一遍最短路,得出数组d1[i],d2[...原创 2019-02-09 18:56:33 · 278 阅读 · 0 评论 -
Uva 10917 林中漫步 最短路树+DAG动态规划
题意 起点为1,终点为2,Bob想从起点走到终点,但是他只会走这样的路,设dis[i]: i点到终点的最短路径,对于边(u,v),如果dis[u]>dis[v],那么Bob就可以走这条边。现在问Bob有多少种方法从起点走到终点。 题解 先以终点为开始求一遍最短路,这样只要dis[A] < dis[B] 那就连一条B到A的边,整张图就是一个DAG图,从起点开始动态规划求到终点的方案数即可...原创 2019-02-09 19:17:35 · 307 阅读 · 0 评论 -
Uva 10537过路费 反向最短路
题意 运送货物需要缴纳过路费,进入一个村庄需要缴纳1个单位的货物,而进入一个城镇时,每20个单位的货物中就要上缴1个单位(向上取整)。你的任务时已知运送到终点的货物数量,求出初始时所需要的最少货物,以及缴纳货物数量最少的路径。 题解 既然已知了终点的货物,那么就可以从终点按照Dijkstra的思想推向起点。对于城镇的货物的计算办法是ceil(d[x]*20/19.0。 代码 #include &l...原创 2019-02-09 19:38:22 · 227 阅读 · 0 评论 -
Uva 11090 Going in cycle 二分+最短路
题意 给定一个n个点m条边的加权有向图,求平均权值最小的回路。 n <= 50 题解 有点像强连通分量,但是SCC只会求出最大的环。所以不能用。 这里二分答案,然后将所有边减去二分的答案,然后跑SPFA,如果有负环,说明答案有效。 代码 #include <bits/stdc++.h> using namespace std; const int maxn = 55; typed...原创 2019-02-09 19:50:13 · 203 阅读 · 0 评论 -
CCF 地铁修建(起点到终点的路径中最大边最小)
最短路变形,d[v] = max(d[v], max(d[u],w)),需要注意的是如果d[v]是初始值,则直接d[v] = max(d[u],w)。 #include <bits/stdc++.h> using namespace std; #define FOR0(a,b) for(int i = a; i < b; ++i) #define FORE(a,b) for(in...原创 2019-03-13 22:07:11 · 234 阅读 · 0 评论 -
CCF 行车路线(多维最短路,两种类型的道路)
题解 先用Floyd预处理各个点小道的距离,每个点有两个状态:从小道到达d1[u]和从大道到达d2[u]。转移方式为: d1[u]:d2[v]+w; 大道到达的点+小道 d2[u]: d2[u]+w; 大道到达的点+大道 d2[u]: d1[v]+w; 小道到达的点+大道 为什么小道的点不能从小道到达的点+小道呢? 因为我们已经预处理过了,比如u->v->w,其中(u,v),(v,w...原创 2019-03-13 22:42:22 · 339 阅读 · 0 评论