博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019.2.15 t2
阅读量:6817 次
发布时间:2019-06-26

本文共 1452 字,大约阅读时间需要 4 分钟。

考虑倒过来计算最短路径长度,设dis[u]表示在最坏情况下,点u到最近的一 个出口的最短路,则p个出口的dis值都是0,答案即为dis[0]。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 10 #define res register int11 #define LL long long12 #define inf 0x3f3f3f3f13 inline int read()14 {15 int x(0),f(1); char ch;16 while(!isdigit(ch=getchar())) if(ch=='-') f=-1;17 while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();18 return f*x;19 }20 21 inline int max(int x,int y){ return x>y?x:y;}22 inline int min(int x,int y){ return x
n2.dd;}35 };36 priority_queue
q;37 38 inline LL dij()39 {40 while(q.size())41 {42 node now=q.top(); q.pop();43 int x=now.id,z=now.dd;44 if(++vis[x]>d+1) continue;45 if(vis[x]==d+1 || !dis[x])46 {47 dis[x]=z;48 for(res i(head[x]) ; i ; i=nxt[i])49 {50 int y=ver[i];51 if(dis[y]==inf)52 q.push((node){ver[i],dis[x]+(LL)edge[i]});53 }54 }55 }56 }57 58 int main()59 {60 freopen("maze.in","r",stdin);61 freopen("maze.out","w",stdout);62 63 memset(dis,inf,sizeof(dis));64 n=read(); m=read(); k=read(); d=read();65 for(res i=1 ; i<=m ; i++)66 {67 int x=read(),y=read(),z=read();68 add(x,y,z); add(y,x,z);69 }70 for(res i=1 ; i<=k ; i++)71 {72 int x=read(); dis[x]=0;73 q.push((node){x,0});74 }75 dij();76 if(dis[0]==inf) puts("-1");77 else cout<
<
View Code

 

转载于:https://www.cnblogs.com/wmq12138/p/10385907.html

你可能感兴趣的文章
专注dApp高效执行和高并发的下一代公有链
查看>>
ONE-sys 整合前后端脚手架 koa2 + pm2 + vue-cli3.0 + element
查看>>
寻找一种易于理解的一致性算法(扩展版)下
查看>>
MySQL - 高可用性:少宕机即高可用?
查看>>
2018电影票房分析-谁才是票房之王
查看>>
程序员可以干到多少岁?
查看>>
Storm系列(六)storm和kafka集成
查看>>
东南亚的招聘骗局,程序员请注意!
查看>>
Android 获得View宽高的几种方式
查看>>
iOS正则表达式
查看>>
关于javascript的this指向问题
查看>>
Promise的理解和用法
查看>>
java B2B2C Springboot电子商城系统-高可用的服务注册中心
查看>>
将一个数的二进制位模式从左到右翻转并输出
查看>>
关于JEPLUS软件介绍——JEPLUS软件快速开发平台
查看>>
《编写可读代码的艺术》读书文摘--第一部分 表面层次的改进
查看>>
使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3
查看>>
网管工作是否值得做下去?
查看>>
神行者PD10-adb push逃脱ro权限
查看>>
JPA(四)之实体关系一对一
查看>>