题目链接:http://acm.uestc.edu.cn/#/problem/show/1639

题意:
在n个点m条边的无向图上,有k个出口
从起点出发,每到一个点(包括起点),该点连出的边中有d条会被封锁
求最坏情况下到达出口的最短路
数据范围:
1<=n<=100000
1<=m<=1000000

题解:

Dijkstra拓展
由于求最坏情况下的最短路,对于每个点,显然最优的前d条边不能走。
对于边u->v,必然要先得到v到出口的最坏情况下的最短路才能得到u经过该边再到出口的最坏情况下的最短路,

也就是该边对于u的价值,所以要从出口往回考虑。
令f[i]表示i到出口的最坏情况下的最短路,同dijkstra算法一样,每个点i可以分为f[i]已确定的和f[i]未确定的
初始时自然是对于每个出口x,f[x]=0已确定。
对于f[v]已确定的点v,将边权为w的边u->v以f[v]+w为关键字加入小根堆中。
对于每个点i还要记录cnt[i]=k,表示到i后,i连出的最优的前k条边已被封锁。
每次取出堆顶对应的边u->v(若f[u]已确定直接弹出)则该边为u连出的(除已被封锁的边外)最优的边
若cnt[u]

//UESTC 1639#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
const int maxm = 1e6+7;
const int inf = 0x3f3f3f3f;
vector <pair<int,int> > G[maxn];
int dis[maxn], vis[maxn], cnt[maxn];
priority_queue <pair<int,int>, vector<pair<int, int> > , greater<pair<int, int> > >pq;
int u, v, w, k, d, n, m, len;
void Dij()
{memset(vis, 0, sizeof(vis));while(!pq.empty()){u = pq.top().second;w = pq.top().first;pq.pop();if(vis[u]) continue;if(cnt[u] == d){dis[u] = w;vis[u] = 1;}else{cnt[u]++;continue;}for(int i = 0; i < (int)G[u].size(); i++){v = G[u][i].second;len = G[u][i].first;if(dis[v] > len + w){pq.push(make_pair(len+w, v));}}}
}
int main()
{while(~scanf("%d %d %d %d", &n,&m,&k,&d)){while(!pq.empty()) pq.pop();for(int i=0; i<=n; i++) dis[i]=inf;memset(cnt, 0, sizeof(cnt));for(int i=0; i<maxn; i++) G[i].clear();for(int i=1; i<=m; i++){scanf("%d %d %d", &u,&v,&w);G[u].push_back(make_pair(w, v));G[v].push_back(make_pair(w, u));}while(k--){scanf("%d", &u);cnt[u] = d;dis[u] = 0;pq.push(make_pair(0, u));}Dij();if(dis[0]==inf) dis[0]=-1;printf("%d\n", dis[0]);}return 0;
}

UESTC 1639 云中谁寄锦书来?雁字回时,月满西楼相关推荐

  1. 云效上线“云中谁寄锦书来”云端专属密码情书

    30行代码可以做什么?!!! 答案是可以制作一封云端专属密码情书. 都说程序员闷骚.不懂浪漫,程序员真正浪漫起来,又是怎样的呢? 上周,云效上线了"云中谁寄锦书"来的云端定制密码情 ...

  2. 谁说程序员不浪漫,那是你没有深入了解他们,云效上线“云中谁寄锦书来”云端专属密码情书

    30行代码可以做什么?!!! 答案是可以制作一封云端专属密码情书. 都说程序员闷骚.不懂浪漫,程序员真正浪漫起来,又是怎样的呢? 上周,云效上线了"云中谁寄锦书"来的云端定制密码情 ...

  3. 【Heap-dijkstra】CDOJ1639 云中谁寄锦书来?雁字回时,月满西楼。

    题意: 在n个点m条边的无向图上,有k个出口 从起点出发,每到一个点(包括起点),该点连出的边中有d条会被封锁 求最坏情况下到达出口的最短路 题解: 该题为dijkstra算法的拓展 由于求最坏情况下 ...

  4. 云中谁寄锦书来,盛大也!

    今天中午,盛大公布了万众瞩目的锦书(Bambook)的最终售价--999元!这个价格让总算没有辜负Michael对其的喜爱,于是第一时间到锦书的官网上排队预订,凑个热闹,排到了第1328位.就在完成支 ...

  5. js template换行_D3.js实现文本的换行详解

    一.文字换行是什么问题? 现有一字符串: var str = "云中谁寄锦书来,雁字回时,月满西楼"; 李清照的一剪梅,读过吗? 在 body里添加一个 svg元素,大小如下: v ...

  6. 一起回味肝肠寸断的古人情诗

    [b]1.<蒹葭>[/b] <蒹葭>是一首哀婉的恋歌."蒹葭苍苍,白露为霜.所谓伊人,在水一方.溯洄从之,道阻且长:溯游从之,宛在水中央."作者的心上人可望 ...

  7. html注释的爱情故事,才女李清照的爱情故事:才下眉头,却上心头

    引导语:因李清照的丈夫赵明诚的离世,李清照的晚年在"寻寻觅觅.冷冷清清"的中度过,那么大家与小编一起了解关于她的爱情故事吧. 文章地址:https://www.llysc.cn/c ...

  8. 云通信的变迁史:从飞鸽传书到即时可达

    云通信行业开始迎来繁荣大发展,似乎已然成为了所有人的共识.在"信息就是生命"的时代,与信息相关的任何话题,都能轻松成为关注的焦点. 当互联网的发展让来自企业侧的沟通需求急剧上升.越 ...

  9. 科大星云诗社动态20201129

    每日一诗:"我最喜欢的诗歌"栏目 第一首 2020.11.29 云中谁寄锦书来?雁字回时,月满西楼. --宋代 · 李清照<一剪梅·红藕香残玉簟秋> 诗歌推荐:刘丛梦 ...

  10. 杜甫ndows 10怎么安排五笔,燕字五笔怎么打|燕子|杜甫|出处_诗词_综合试卷网_中国教育考试门户网站...

    燕字五笔: AUKO 拼音:yàn yān 注音:ㄧㄢˋ 部首:灬 部外笔画:12 总笔画:16 五笔:AUKO 仓颉:TLPF 笔顺编号:1221251211354444 四角号码:44331 释义 ...

最新文章

  1. 中国7位学者当选!又一院士名单公布
  2. 冷板式液冷--液冷服务器(6-2)
  3. Loading(二)--ThreeBodyLoadingView
  4. 在tensorflow中的网格图问题--np.mgrid()
  5. excel打开csv错误换行_「乱吐槽·乱学习」excel高手捷径:一招鲜,吃遍天③
  6. 我与前端之间不得不说的三天两夜之html基础
  7. Spring依赖注入的模式和类型
  8. redis lettuce 超时_Spring Cache 操作 Redis 实现数据缓存(上)
  9. vue源码分析系列之响应式数据(三)
  10. 任正非发声:把活下来作为最主要纲领;安卓山寨 iOS 启动器下载超 5000 万次;公司停电,程序员去网吧写代码 | EA周报...
  11. python匹配邮箱_在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类...
  12. 【转】在线网页取色器
  13. 关于腾讯云域名访问问题的几个可能解决方案
  14. 移动互联应用开发基础知识简答
  15. 医学图像处理和深度学习入门
  16. 分布式协调器ZooKeeper3.4—程序员手册
  17. 中职学校计算机应用基础学什么,浅谈中职学校《计算机应用基础》课程改革的一点建议...
  18. 小福利,如何根据爬虫获得的食物卡路里、自身基础热量和运动消耗量计算总的热量差
  19. 华为G700升级鸿蒙,华为G700刷入recovery的教程(移动版)
  20. U盘FAT32转换NTFS格式的方法

热门文章

  1. srand c语言,C语言srand()rand()
  2. OPENCV(七)对啤酒盖进行缺陷检测
  3. java ship_用Java对象来解答世界悖论难题“忒修斯之船”
  4. 微信小程序的图片预加载处理
  5. mysql存储包含单引号英文字符串,SQL中写入包含有英文单引号“ '' ”失败问题深入详解...
  6. 命令查看yarn当前任务列表
  7. left floating
  8. Vivado IP核之定点数转为浮点数Floating-point
  9. 安卓虚拟机_安卓中的安卓虚拟机,那些闪退应用有救了
  10. Python:实现binomial coefficient二项式系数算法(附完整源码)