题目链接:https://vjudge.net/problem/CodeForces-1196F

题意:从图中找出第K短的最短路,最短路:从一个点到另一个的最短距离。

思路:题目说了,每两个点之间的边小于等于1,那么如果我们只取K条边,

那么顶点数  V∈[K,2K],所以我们一定可以在K条边中的到第K短的最短路。

当然我们先要把所有变来一个sort,取权值小的K条边。

之后跑一个floyd就可以了,然后把所有最短路存下来,找出第K小的最短路。

ps(这里的编号很方便,我是参考另一个大佬的,这里说明一下,当然也可以和我之前一样,

来个计数的慢慢编号)。


 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <cmath>
#include <iomanip>
using namespace std; typedef long long LL;
#define inf (1LL << 60)
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--) const int N = (int)2e5 + ;
LL tmp[N];
LL dis[][];
int n,m,k;
map<int, int> s;
int tot; struct node{
int u;
int v;
int w; bool friend operator < (node a,node b){
return a.w < b.w;
} }o[N]; int ID(int x){
if(s.count(x)) return s[x];
return s[x] = ++tot;
} int main(){ ios::sync_with_stdio(false);
cin.tie(); cin >> n >> m >> k; int u,v,w,l = ;
//存边
rep(i,,m){
cin >> u >> v >> w;
o[l].u = u;
o[l].v = v;
o[l++].w = w;
}
//sort边,取前K条
sort(o,o + m); rep(i,,) rep(j,,){
if(i == j) dis[i][j] = ;
else dis[i][j] = inf;
} //建图
rep__(i,,min(m,k)){
dis[ID(o[i].u)][ID(o[i].v)] = dis[ID(o[i].v)][ID(o[i].u)] = o[i].w;
} rep(k,,tot) rep(i,,tot) rep(j,,tot){
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
} l = ;
rep(i,,tot) rep(j,i + ,tot){
tmp[l++] = dis[i][j];
} sort(tmp, tmp + l); cout << tmp[k - ] << endl; getchar();getchar(); return ;
}

K-th Path CodeForces - 1196F的更多相关文章

  1. codeforces#1196F. K-th Path(最短路,思维题)

    题目链接: https://codeforces.com/contest/1196/problem/F 题意: 在无向图的所有最短路点对中,求出第$k$大 数据范围: $ 1 \leq k \leq ...

  2. Codeforces 1196F. K-th Path

    传送门 发现到 $K$ 不大,考虑有什么和 $K$ 有关的结论 发现答案似乎只会经过前 $K$ 小的边,如果边权第 $K$ 小的边有多条那么可以任意取 证明挺显然的吧,首先如果走了边权排名大于 $K$ ...

  3. Shortest Path Codeforces - 59E || 洛谷P1811 最短路_NOI导刊2011提高(01)

    https://codeforces.com/contest/59/problem/E 原来以为不会..看了题解发现貌似自己其实是会的? 就是拆点最短路..拆成n^2个点,每个点用(i,j)表示,表示 ...

  4. Dynamic Shortest Path CodeForces - 843D (动态最短路)

    大意: n结点有向有权图, m个操作, 增加若干边的权重或询问源点为1的单源最短路. 本题一个特殊点在于每次只增加边权, 并且边权增加值很小, 询问量也很小. 我们可以用johnson的思想, 转化为 ...

  5. President's Path CodeForces - 416E (最短路,计数)

    大意: 给定无向图, 求任意两点间所有最短路经过的边数 刚开始想先用floyd跑出最短路, 然后在DAG上DP, 交了1发, 发现会算重复 贴一下题解的做法 #include <iostream ...

  6. K Balanced Teams CodeForces - 1133E (Dp)

    题意: 给出 n 个数,选取其中若干个数分别组成至多 k 组,要求每组内最大值与最小值的差值不超过5,求最后被选上的总人数. 题解: 将a[1∼n] 从小到大排序, f[i][j] 表示到第 i 个数 ...

  7. Maximum path CodeForces - 762D

    大意: 3*n矩阵, 求从(1,1)->(3,n)路径最大点权和. 核心观察是每个点回头一定不会超过1, 这是因为只有三行, 若回头两格一定是$9$个位置全走, 显然可以找到一种只会头一格的方案 ...

  8. Codeforces 1103 C. Johnny Solving

    Codeforces 1103 C. Johnny Solving 题目大意: 有一张 \(n\) 个点 \(m\) 条边的简单无向图,每个点的度数至少为 \(3\) ,你需要构造出两种情况之一 一条 ...

  9. Fling——K

    K. Fling Fling is a kind of puzzle games available on phone.This game is played on a board with 7 ro ...

随机推荐

  1. vue+element 表单验证

    效果图 <template> <div class="formValidator"> <div v-for="(item,index) in ...

  2. Java基础之十三 字符串

    第十三章 字符串 13.1 不可变String String对象是不可变的.String类中每一个看起来会修改String值得方法,实际上都是创建了一个全新得String对象,以包含修改后得字符串内容 ...

  3. 新添加的用户无法sudo解决方案

    问题:xxx(用户名) is not in the sudoers file. This incident will be reported. 用户管理: 1.创建用户 (1)方法1 $ sudo a ...

  4. BBC micro:bit引脚介绍

    另外两个大引脚(3V和GND)是非常不同的! 注意 标记为3V和GND的引脚与电路板的电源相关,千万不要连接在一起. 电源输入:如果BBC micro:bit由USB或电池供电,则可以使用3V引脚作为 ...

  5. 10. Scala数据结构(上)-集合操作

    10.1 数据结构特点 10.1.1 Scala集合基本介绍 uml => 统一建模语言 1) Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问 两个主要的包 不可变集合:s ...

  6. 【实战经验】--Xilinx--IPCore--FIFO

    2019.12.10补充 结论:先写进的数据在独处时位于高位,后写入的数据在低位,且排序单位为Byte,即先后写入0X01,0X02,读出后也为0x010x02,此外,在写入数据量达到读出数据位宽后5 ...

  7. 查看电脑已保存的wifi及密码

    1. 查看以保存的wifi名称  打开cmd(win+r) #查看已保存WiFi名称 netsh wlan show profiles 2. 查看已保存的wifi的密码 netsh wlan show ...

  8. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  9. Delphi面向对象的编程思想

    第一章.建立面向对象的新思维 1.1.1历史背景 目前对象技术的前沿课题包括设计模式.分布式对象系统.和基于网络的对象应用等 目前面向对象的语言包含4个基本的分支: 1.基于Smalltalk的:包括 ...

  10. mongodb数据库怎么迁移备份?

    1.先进入到mongodb目录的bin目录下,Linux windos是一样   image.png 2.集合备份和恢复 使用mongo自带命令来迁移数据,思路是先导出集合数据再导入到数据库中 导出命 ...