http://acm.hdu.edu.cn/showproblem.php?pid=6705

这是比赛前8题过的人数第二少的题,于是就来补了,但感觉并不难啊。。(怕不是签到难度

题意:给个图,给几条路,让你求第k短路,所有路径不限制使用次数。

思路:最短路肯定是最短的那条,第2短就有2种可能,可能是长度第二短的那条,也有可能是接着刚才的最短路继续走(2个还不会,但是先这样拓展),到第3短就真的是2种可能了(例如1,2,9,1+2<9),但是k短路显然最多是由k段拼成(反证法:如果是k+1条,那个把第k+1段扔了就会更小,所以肯定不是最优),所以直接循环max(k)次,第i次循环就把i段拼成的路更新进去就行。可以开优先队列,装路径总长和终点的struct。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 5e4+10;
  5. struct node{
  6. ll to,len;
  7. node(){}
  8. node(ll a,ll b):to(a),len(b){}
  9. };
  10. struct cmp{
  11. bool operator ()(const node &x,const node &y) const{
  12. return x.len>y.len;
  13. }
  14. };
  15. bool cmp1(node a,node b){
  16. return a.len<b.len;
  17. }
  18. priority_queue<node,vector<node>,cmp > q0;
  19. priority_queue<int> q1;
  20. vector<node> ve[N];
  21. ll a[N],b[N];
  22. void init(int n){
  23. while(!q1.empty()) q1.pop();
  24. while(!q0.empty()) q0.pop();
  25. for(int i=1;i<=n;i++) ve[i].clear();
  26. }
  27. int main(){
  28. ios::sync_with_stdio(0);
  29. cin.tie(0);
  30. cout.tie(0);
  31. ll t;
  32. cin>>t;
  33. while(t--){
  34. ll n,m,k;
  35. cin>>n>>m>>k;
  36. init(n);
  37. for(ll i=1;i<=m;i++){
  38. ll u,v,w;
  39. cin>>u>>v>>w;
  40. q0.push({v,w});
  41. q1.push(w);
  42. ve[u].push_back(node(v,w));
  43. }
  44. for(ll i=1;i<=n;i++){
  45. sort(ve[i].begin(),ve[i].end(),cmp1);
  46. }
  47. ll mx = 0;
  48. for(ll i=0;i<k;i++){
  49. cin>>a[i];
  50. mx = max(mx,a[i]);
  51. }
  52. for(ll i=1;i<=mx;i++){
  53. b[i] = q0.top().len;
  54. ll x = q0.top().to;
  55. q0.pop();
  56. for(int j=0;j<ve[x].size();j++){
  57. ll y=ve[x][j].to,len=b[i]+ve[x][j].len;
  58. if(q1.size()==mx){
  59. if(len>q1.top()) break;
  60. else{
  61. q1.pop();
  62. q1.push(len);
  63. q0.push({y,len});
  64. }
  65. }
  66. else {
  67. q1.push(len);
  68. q0.push({y,len});
  69. }
  70. }
  71. }
  72. for(ll i=0;i<k;i++) cout<<b[a[i]]<<endl;
  73. }
  74. return 0;
  75. }

ccpc网赛 hdu6705 path(队列模拟 贪心的更多相关文章

  1. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心

    [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 457  Solved: 203[Submit][Status][D ...

  2. 2019CCPC网络赛 HDU6705 - path K短路

    题意:给出n个点m条边的有向图,问图上第K短路的长度是多少(这里的路可以经过任何重复点重复边). 解法:解法参考https://blog.csdn.net/Ratina/article/details ...

  3. 2019ccpc网络赛hdu6705 path

    path 题目传送门 解题思路 先用vector存图,然后将每个vector按照边的权值从小到大排序.将每个顶点作为起点的边里最短的边存入优先队列.对于存入优先队列的信息,应有边起点,终点,是其起点的 ...

  4. CCPC网赛,HDU_5832 A water problem

    Problem Description           Two planets named Haha and Xixi in the universe and they were created ...

  5. ccpc网赛 hdu6703 array(权值线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=6703 大意:给一个n个元素的数组,其中所有元素都是不重复的[1,n]. 两种操作: 将pos位置元素+1e7 查 ...

  6. python--递归(附利用栈和队列模拟递归)

    博客地址:http://www.cnblogs.com/yudanqu/ 一.递归 递归调用:一个函数,调用的自身,称为递归调用 递归函数:一个可以调用自身的函数称为递归函数 凡是循环能干的事,递归都 ...

  7. 2018 CCPC网络赛

    2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物 ...

  8. 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree

    // 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree // 题意:n个点的树,每个节点有权值为正,只能用一次,每条边有负权,可以 ...

  9. (四面体)CCPC网络赛 HDU5839 Special Tetrahedron

    CCPC网络赛 HDU5839 Special Tetrahedron 题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数 思路:枚举四面体上一条线 ...

随机推荐

  1. TypeScript入门实例

    前言 TypeScript是JavaScript的超集,微软公司开发,利用es6语法,实现对js的面向对象编程思想,写代码的时候会像强类型语言一样,指定参数类型.返回值类型,类型不对会报错,但编译后还 ...

  2. Eclipse Other Projects小问题

    Eclipse 不知什么时候多了个 "Other Projects" 文件夹,所有的项目又多了一层目录,如图所示: 虽然对功能没任何影响,但每次打开有些麻烦,多少感觉有些不爽…… ...

  3. Consul和Kong的实践(一)

    Consul和Kong的实践(一) 这一篇先介绍consul集群,以及consul和应用服务的结合使用,下一篇是和kong网关的结合. 一.Consul的集群安装 以其中一台机器为例: mkdir / ...

  4. 深入理解Apache Kafka

    一.介绍 Kafka在世界享有盛名,大部分互联网公司都在使用它,那么它到底是什么呢? Kafka由LinkedIn公司于2011年推出,自那时起功能逐步迭代,目前演变成一个完整的平台级产品,它允许您冗 ...

  5. 夯实Java基础(十四)——Java8新的日期处理类

    1.前言 Java8之前处理日期一直是Java程序员比较头疼的问题,从Java 8之后,Java里面添加了许多的新特性,其中一个最常见也是最实用的便是日期处理的类——LocalDate.LocalDa ...

  6. Asp.Net Core WebAPI+PostgreSQL部署在Docker中

     PostgreSQL是一个功能强大的开源数据库系统.它支持了大多数的SQL:2008标准的数据类型,包括整型.数值值.布尔型.字节型.字符型.日期型.时间间隔型和时间型,它也支持存储二进制的大对像, ...

  7. 从输入URL到浏览器显示页面发生了哪些事情---个人理解

    经典面试题:从输入URL到页面显示发生了哪些事情 以前一直都记不住,这次自己理解了一下 用自己的话总结了一次,不对的地方希望大佬给我指出来 1.主机通过DHCP协议获取客户端的IP地址.子网掩码和DN ...

  8. Unity进阶之ET网络游戏开发框架 03-Hotfix层启动

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  9. 查看centos中的用户和用户组和修改密码

    查看centos中的用户和用户组 1.用户列表文件: vim /etc/passwd/ 2.用户组列表文件: vim /etc/group 3.查看系统中有哪些用户: cut -d : -f /etc ...

  10. appium输入法踩坑解决方案-----中文乱码及输入法搜索无法点击

    一.appium1.7.1 遇到的坑: 1. 在写安卓的搜索用例脚本时,发现输入内容后,搜索出现在输入法键盘原来的确认位置,定位不到手机自带输入法的"搜索"键: 2. 传入中文搜索 ...