codeforces1196F K-th Path 全源k短路

网址:http://codeforces.com/contest/1196/problem/F

题意:

求一个无向无环无重边的连通图的全源$k$短路。点数$n$,边数$m$,$k$的范围分别是$2e5,\frac{n(n-1)}{2} ,min(m,400)$。

题解:

这个题解属实牛逼,还能这么操作:对所有的边按权重从小到大排序,然后选取前$min(m,k)$条,然后使用这些边构造新图跑一遍$Floyd$算法,然后对得到的大于$0$的最短路从小到大排序,选第$k$个即可。这个算法如何证明答案一定在其中?证明:$k\leq m$恒成立,我们选出的最小的$k$条边中,若这$k$条边都不连通,则$k$短路就是最大的那一条边,如果连通,则路径数将增加,显然第$k$短路在其中。

AC代码:

#include 
using namespace std;
const int MAXN=200005;
struct edge
{
    int u,v,w;
    bool operator<(const edge &a)const
    {
        return w>n>>m>>k;
    for(int i=0;i>e[i].u>>e[i].v>>e[i].w;
    cout<

 

转载于:https://www.cnblogs.com/Aya-Uchida/p/11255413.html

你可能感兴趣的:(数据结构与算法)