题目链接: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 ;
}

最新文章

  1. Linux(centeros)下安装jdk
  2. C++之再续前缘(二)——类和对象(上)
  3. 使用 AFNetworking 进行 XML 和 JSON 数据请求
  4. [转载] vim带你装逼带你飞(一)
  5. Java基础知识强化之IO流笔记21:FileInputStream读取数据
  6. Dictionary&lt;string, string&gt; 排序
  7. 残差网络(Residual Networks, ResNets)
  8. django_1
  9. markdown笔记实现页内目录跳转
  10. 19.3.20 解决pycharm快捷键无法使用问题和熟悉git与码云操作流程
  11. [原创] debian 9.3 搭建Jira+Confluence+Bitbucket+crowd+seafile (零) 修改端口的问题
  12. pyinstall实现不显示控制窗口
  13. Swift Write to file 到电脑桌面
  14. docker容器启动设置固定IP
  15. input实时监听
  16. Cloudstack云平台实践
  17. RTSP HTTP RTP RTCP
  18. [转]Android使用Application总结
  19. evaluate-division
  20. Bootstrap学习笔记(6)--导航居中

热门文章

  1. 使用docker部署nginx+tomcat架构(2):访问mysql数据库
  2. 设计模式主目录 C++实现
  3. json for modern c++(nlohmann json)使用小计
  4. 写代码注意了,打死都不要用 User 这个单词
  5. 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis
  6. 深入理解 JavaScript 中的 class
  7. 在centos系统的/etc/hosts添加了 当前主机的 ‘ NAT分配的IP controller’,RabbitMQ添加用户报错。
  8. [C++进阶] 数据结构与算法
  9. laravel门面与服务提供者区别
  10. Remote Desktop突然不能用了 &ldquo;This could be due to CredSSP encryption oracle remediation&rdquo;