Codeforces Gym100783H 最短路 其他】的更多相关文章

原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100783H.html 题目传送门 - CF-Gym100783H 题意 给定一个 $n$ 个节点 $P$ 条带权边的无向图,有 $m$ 个特殊点.给定开始点 $X$ 和结束点 $Y$ . 现在请你求一个 $k$ ,使得令所有边的权值都加上 $k$ 之后,$X$~$Y$ 的最短路经过且仅经过特殊点,不能有其他的最短路途中任意一个节点不是特殊点. 问满足条件的 $k$ 最大是多少.如果 $k=\in…
A Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 300C Description Vitaly is a very weird man. He's got two favorite digits a and b. Vitaly calls a positive integer good, if the decimal…
大意: 给定无向图, 求任意两点间所有最短路经过的边数 刚开始想先用floyd跑出最短路, 然后在DAG上DP, 交了1发, 发现会算重复 贴一下题解的做法 #include <iostream> #include <algorithm> #include <cstdio> #define REP(i,a,n) for(int i=a;i<=n;++i) using namespace std; const int N = 510, INF = 0x3f3f3f3…
Description 给定一个n个点,m条边的带权无向图,和起点S.请你选择一个点u(u!=S),使得在图中删掉点u 后,有尽可能多的点到S的最短距离改变. Solution 先建出最短路DAG,在DAG中跑出灭绝树 灭绝树是一个点灭绝后子树中的点都灭绝的一棵树(灭绝在不同题目中意义不同) 先拓扑一下,每个点的最短路依赖的点就在它拓扑序前了 我们在拓扑序中从前往后扫 扫到点x,它的依赖点都已求出灭绝树父亲 x的灭绝树父亲就是它所有依赖点的灭绝树LCA LCA可以用树上倍增求一下 Notice…
题目 给你一个有n个顶点.m条边的无向带权图.需要擦除一些边使得剩余的边数不超过k,如果一个点在原始图到顶点1的最短距离为d,在删边后的图中到顶点的最短距离仍是d,则称这种点是 good.问如何删边,使得 good点最多. 分析 首先调用最短路算法求各点到顶点1的最短距离,同时记录下每点在最短路上的前一个顶点.然后从顶点1出发搜索一个大小为k的联通块即可(如果够k个) 代码 #include<cstdio> #include<cstring> #include<vector&…
题意及思路:https://blog.csdn.net/yzyyylx/article/details/90145400 这题主要巧妙在分析了最短路算法的性质,得出大小小于等于3的连通块一定不会被再次访问的结论. 代码: #include <bits/stdc++.h> using namespace std; bool v[80][1 << 18]; int dp[80][1 << 18]; const int maxn = 1010; struct node { i…
题意:给你一张无向图,有若干次操作,每次操作会修改一条边的边权,每次修改后输出1到n的最短路.修改相互独立. 思路:我们先以起点和终点为根,找出最短路径树,现在有两种情况: 1:修改的边不是1到n的最短路上的边,那么可能出现的情况就是这条边的权值变得足够小,出现了新的最短路,那么我们只需判断一下是不是出现了新的最短路即可,假设这条边的两端是x, y,修改后的权值是z,dis1是从1开始的最短路,dis2是从n开始的最短路,那么ans = min(dis1[n], dis1[x] +dis2[y]…
题意: 给出n个点m条公路k条铁路. 接下来m行 u v w      //u->v 距离w 然后k行 v w         //1->v 距离w 如果修建了铁路并不影响两点的最短距离,那么修铁路是没必要的 求能删掉多少条铁路 题解: 把公路和铁路放一起构成一个图,然后跑一边最短路.最后如果最短路结果小于铁路的长度,那么这条铁路就没必要修 如果最短路结果等于铁路的长度,要先判断一下这个最短路是不是一条,如果这条最短路个数多于一条那么这条铁路就没必要修 怎么判断最短路路径数是不是大于1? 1…
题目链接:http://codeforces.com/contest/95/problem/C 思路:首先dijkstra预处理出每个顶点到其他顶点的最短距离,然后如果该出租车到某个顶点的距离小于等于最短距离,就连边,费用为一开始出租车所需的费用,建好图之后再求一次最短路即可. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <…
题目链接: http://codeforces.com/problemset/problem/208/C C. Police Station time limit per test:2 secondsmemory limit per test:256 megabytes 问题描述 The Berland road network consists of n cities and of m bidirectional roads. The cities are numbered from 1 to…