原文链接https://www.cnblogs.com/zhouzhendong/p/CF715B.html 题解 接下来说的“边”都指代“边权未知的边”. 将所有边都设为 L+1,如果dis(S,T) < L ,那么必然无解. 将所有边都设为 1 ,如果 dis(S,T) > L ,那么必然无解. 考虑将任意一条边的权值+1,则 dis(S,T) 会 +0 或者 +1 . 如果将所有边按照某一个顺序不断+1,直到所有边的权值都是L+1了,那么在这个过程中,dis(S,T) 是递增的,而且一定…
Complete The Graph 题解: 比较特殊的dij的题目. dis[x][y] 代表的是用了x条特殊边, y点的距离是多少. 然后我们通过dij更新dis数组. 然后在跑的时候,把特殊边都先当做1在跑,并且经过特殊边的时候,记得将x更新. 然后如果dis[0][t] < L 则代表不用特殊边也会小于L.所以无论是特殊的边答案是多少,dis[0][t]<L也是固定的. 然后我们不断检查dis[c][t] (for c 1 to N) 是不是 <= L . 找到对应的dis[c]…
题目链接 \(Description\) 给定一张有向图,求哪些边一定在最短路上.对于不一定在最短路上的边,输出最少需要将其边权改变多少,才能使其一定在最短路上(边权必须为正,若仍不行输出NO). \(Solution\) 正反跑两遍Dijkstra.一条边\((u,v,w)\)在最短路上当且仅当\(dis[S][u]+dis[v][T]+w=dis[S][T]\). 一定在最短路上则满足,从\(S\)走最短路到\(u\)的方案数 * 从\(v\)走最短路到\(T\)的方案数 = 从\(S\)到…
题目链接 先随便建一棵树. 如果两个点(u,v)不经过非树边,它们的dis可以直接算. 如果两个点经过非树边呢?即它们一定要经过该边的两个端点,可以直接用这两个点到 u,v 的最短路更新答案. 所以枚举每条非树边的两个端点,求一遍这两个点到所有点的最短路.非树边最多21条,所以要求一遍最短路的点最多42个. 另外对于一条边的两个点只求一个就好了.因为要用这条非树边的话它们两个都要经过. //779ms 28900KB #include <queue> #include <cstdio&g…
I. Move Between Numbers   time limit per test 2.0 s memory limit per test 256 MB input standard input output standard output You are given n magical numbers a1, a2, ..., an, such that the length of each of these numbers is 20 digits. You can move fro…
传送门 题目大意 给出一个图,一些边带权,另一些边等待你赋权(最小赋为1).请你找到一种赋权方式,使得 s 到 t 的最短路为 L n ≤ 1e3 ,m ≤ 1e4 ,L ≤ 1e9 分析 二分所有边的边权和 使得二分后第p条边权值为k,1~p-1条边权值为inf,剩余边权值为1 对于每种情况跑一次最短路 如果结果小于L则增大点权和否则减少 代码 #include<iostream> #include<cstdio> #include<cstring> #include…
B. Complete The Graph time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output ZS the Coder has drawn an undirected graph of n vertices numbered from 0 to n - 1 and m edges between them. Each edge…
CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找出 \(i\) 号点到 \(j\) 号点的最短路径.则该最短路径只有两种可能: \(i\) 号点直接到达 \(j\) 号点的路径中产生最短路径 \(i\) 号点经过一些中间点到达 \(j\) 号点的路径中产生最短路径 我们添加一个点 \(k\),使得 \(i\) 号点到 \(j\) 号点再添加后产生…
D. Complete The Graph time limit per test: 4 seconds memory limit per test: 256 megabytes input: standard input output: standard output ZS the Coder has drawn an undirected graph of n vertices numbered from 0 to n - 1 and m edges between them. Each e…
图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是非常好理解的.理解透自己多默写几次就可以记住,机试时基本的工作往往就是高速构造邻接矩阵了. 对于平时的练习,一个非常厉害的 ACMer  @BenLin_BLY 说:"刷水题能够加快我们编程的速度,做经典则能够让我们触类旁通,初期假设遇见非常多编不出.最好还是就写伪代码,理思路.在纸上进行总体分析和…