1196F - K-th Path
题目链接:
http://codeforces.com/problemset/problem/1196/F
题目大意::无向图,求任意两点第k短的路径
思路:按照边的大小,只保留前K个边,如果不连同的话, 第K小的边一定是这K个边中的一个,连同的话,一定是这K个边之间的复合边。重新编号,然后跑floyd。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1E18+;
const int N=2E5+;
struct stu{
ll a,b,c;
bool friend operator < (const stu &x,const stu &y){
return x.c>y.c;
}
};
priority_queue<stu >que;
vector<ll >v;
vector<stu >ve[N];
ll mark[N];
ll dp[+][+];
int main(){
ll n,m,k;
cin>>n>>m>>k;
ll x,y,z;
for(int i=;i<=m;i++){
cin>>x>>y>>z;
que.push({x,y,z});
}
ll pos=;
int s=k*;
for(int i=;i<=s;i++){
for(int j=;j<=s;j++){
dp[i][j]=INF;
}
}
for(int i=;i<=s;i++) dp[i][i]=;
for(int i=;i<=k&&!que.empty();i++){
stu x1=que.top();
que.pop();
int da=x1.a;
int db=x1.b;
if(mark[da]){
da=mark[da];
}
else {
mark[da]=pos++;
da=mark[da];
}
if(mark[db]) db=mark[db];
else {
mark[db]=pos++;
db=mark[db];
}
dp[da][db]=x1.c;
dp[db][da]=x1.c;
} for(int i=;i<pos;i++){
for(int j=;j<pos;j++){
for(int k=;k<pos;k++){
dp[j][k]=min(dp[j][k],dp[j][i]+dp[i][k]);
}
}
}
for(int i=;i<pos;i++){
for(int j=i+;j<pos;j++){
v.push_back(dp[i][j]);
}
}
sort(v.begin(),v.end());
cout<<v[k-]<<endl;
return ;
}
1196F - K-th Path的更多相关文章
- Fling——K
K. Fling Fling is a kind of puzzle games available on phone.This game is played on a board with 7 ro ...
- Kth Ancestor 第k个祖先问题
题目出处 这道题目出自hackerrank的8月月赛的第三题. 题目大意: 先给出一棵树 之后有三种操作分别为:加边,查询,和删除一个节点 查询的时候要给出任意节点x的第k个祖先 每组数据有t个cas ...
- K - The Unique MST - poj 1679
题目的意思已经说明了一切,次小生成树... ****************************************************************************** ...
- JAVA之单源最短路径(Single Source Shortest Path,SSSP问题)dijkstra算法求解
题目简介:给定一个带权有向图,再给定图中一个顶点(源点),求该点到其他所有点的最短距离,称为单源最短路径问题. 如下图,求点1到其他各点的最短距离 准备工作:以下为该题所需要用到的数据 int N; ...
- PAT甲题题解-1053. Path of Equal Weight (30)-dfs
由于最后输出的路径排序是降序输出,相当于dfs的时候应该先遍历w最大的子节点. 链式前向星的遍历是从最后add的子节点开始,最后添加的应该是w最大的子节点, 因此建树的时候先对child按w从小到大排 ...
- poj 1062 昂贵的聘礼(floyd path的应用)
题目链接:http://poj.org/problem?id=1062 题意就不解释了中问题. 这题用dfs也行.但是感觉还是floyd比较好一点主要是他们交易是有条件的交易总的等级差不能超过m 所以 ...
- dfs --path sum 问题 本质上就是组合问题(有去重)
135. 数字组合 中文 English 给定一个候选数字的集合 candidates 和一个目标值 target. 找到 candidates 中所有的和为 target 的组合. 在同一个组合中, ...
- Usual tiny skills & solutions
Ubuntu and Win10 - double OS 2016-02-21 Yesterday I helped my friend install Ubuntu (14.04 LTS) on h ...
- Sublime Text 2下搭建Python环境常见错误
Sublime Text 2下搭建Python环境时,最容易出的错误就是Python环境配置错误,导致build(Ctrl+B)后没有任何反应. 关于Python编程环境的配置,网上很容易搜索到.先默 ...
- Java实现操作dos命令
java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...
随机推荐
- [gcd]Codeforces Common Divisors
Common Divisors time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- sql-lib闯关51-60
第五十一关 这一关和三十八关基本一样 ,堆叠注入问题 只不过是字符型 ?sort=1';create table test51 like users;%23 看数据 ...
- 一文看懂NLP神经网络发展历史中最重要的8个里程碑!
导读:这篇文章中作者尝试将 15 年的自然语言处理技术发展史浓缩为 8 个高度相关的里程碑事件,不过它有些偏向于选择与当前比较流行的神经网络技术相关的方向.我们需要关注的是,本文中介绍的许多神经网络模 ...
- BUAA_2020_OO_第一单元总结
三次作业,三次成长 第一次作业--幂函数求导总结 作业思路和心得 第一次作业的要求只有x的指数这样的幂函数加减组成表达式,对表达式进行求导,而且没有格式错误的检查,所以难度感觉还不是很高.不过由于我寒 ...
- Springboot + Freemarker(一)
Maven pom文件配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId& ...
- Jmeter接口测试之案例实战(十一)
在前面的知识体系中详细的介绍了Jmeter测试工具在接口自动化测试中的基础知识,那么今天更新的文章主要是对昨晚的上课内容做个总结. 首先来看Jmeter测试工具在图片上传中的案例应用.首先结合互联网产 ...
- macbook中python3环境的配置
首先,打开环境配置文件 在终端输入: open ~/.bash_profile 如果没有.bash_profile 文件 先创建该文件:进入创建目录输入下面命令 vim ~/.bash_profile ...
- Go语言库系列之aurora
背景介绍 今天跟大家推荐一款可以给终端输出上色的工具--aurora. 极速上手 准备工作 初始化项目 go mod init aurora 演示项目结构 . ├── go.mod ├── go.su ...
- MATLAB 概率论题
1. 用模拟仿真的方法求解 clc clear tic n=0; N=100000; for ii=1:N b='MAXAM'; %字符串格式 a=randperm(5); % b=[b(a(1)), ...
- JS 剑指Offer(六) 用两个栈实现队列
题目:用两个栈实现队列,实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数,若队列中没有元素deleteHead返回-1 分析:在队列的尾部插入 ...