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

本文共 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

你可能感兴趣的文章
Shell重启Tomcat脚本
查看>>
自适应网页布局可借鉴网站
查看>>
设置 viewport 实现定宽网页 WebApp 下布局自适应
查看>>
webpack+vue 我的视角(持续更新)
查看>>
[Android Pro] Android性能优化典范第一季
查看>>
[HAOI2006]受欢迎的牛
查看>>
jdbc 链接池
查看>>
快速排序
查看>>
状态模式
查看>>
m4-第7周作业
查看>>
微信更换上一次记录地址
查看>>
django rest framework批量上传图片及导入字段
查看>>
Linux 配置静态IP
查看>>
原生js实现Ajax
查看>>
C++11新特性应用--实现延时求值(std::function和std::bind)
查看>>
Mac OS X Command Line
查看>>
Terraform中DataSource的深度分析
查看>>
策略模式-鸭子怎么飞-实例
查看>>
01.Apache FtpServer配置
查看>>
Common Lisp学习笔记(七)
查看>>