代码参照:   LYOI Online Judge     #374. 初中的最后一天

分层图最短路模板题

  1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5 #include<queue>
6
7 using namespace std;
8
9 const int MAXN=5010;
10 const int MAXM=125100;
11 const int MOD = 1e9+7;
12 int n,m,k,cnt;
13 int head[MAXN];
14 int d[MAXN][60];
15
16 struct Edge{
17 int s,t,w,next;
18 }edge[MAXM<<1];
19
20 inline int read(){
21 int s=0,w=1;
22 char ch=getchar();
23 while (ch<'0'||ch>'9'){
24 if(ch == '-') w = -1;
25 ch = getchar();
26 }
27 while (ch>='0'&&ch<='9'){
28 s=s*10+ch-'0';
29 ch=getchar();
30 }
31 return s*w ;
32 }
33
34 void Add(int u,int v ,int wi ){
35 cnt++ ;
36 edge[cnt].s=u;
37 edge[cnt].t=v;
38 edge[cnt].w=wi;
39 edge[cnt].next = head[u];
40 head[u] = cnt;
41 }
42
43 struct HeapNode{
44 int pos , dis , v ;
45 bool operator < ( const HeapNode &a ) const {
46 return a.dis < dis ;
47 }
48 };
49
50 void dijkstra( ){
51 priority_queue<HeapNode>Q;
52 for(int i = 1;i <= n;i++){
53 for(int j = 0 ; j <= k; j++ ){
54 d[i][j]=2147483647;
55 }
56 }
57 d[1][0] = 0 ;
58 Q.push((HeapNode){1,0,0});
59 while(!Q.empty()){
60 HeapNode tmp = Q.top() ;
61 int u = tmp.pos;
62 int t = tmp.v;
63 if( d[u][t] != tmp.dis ){
64 Q.pop();
65 continue;
66 }
67 Q.pop();
68 for(int i = head[u] ; i ; i = edge[i].next ){
69 int to = edge[i].t ;
70 int wi = edge[i].w ;
71 if( d[to][t] > d[u][t] + wi ){
72 d[to][t] = d[u][t] + wi ;
73 Q.push ( (HeapNode) { to, d[to][t] , t });
74 }
75 if( t<k &&d[to][t+1] >(d[u][t]) + (edge[i].w>>1)){
76 d[to][t+1] = d[u][t] + (edge[i].w>>1);
77 Q.push( (HeapNode){to , d[to][t+1], t+1 });
78 }
79 }
80 }
81 }
82
83 int main(){
84
85 n=read(); m=read(); k=read();
86
87 for(int i = 1 ;i <= m ; i++ ){
88 int x , y , z ;
89 x=read() ; y=read() ; z=read() ;
90 Add(x,y,z); Add(y,x,z);
91 }
92
93 int time;
94 time= read();
95 int minn=2147483647;
96
97 dijkstra() ;
98 for(int i=0;i<=k;i++){
99 minn = min(minn , d[n][i]) ;
100 }
101
102 if(minn > time ){
103 printf("QaQ\n");
104 }
105 else printf("YES\n");
106 printf("%d",minn%MOD);
107 return 0;
108 }

最新文章

  1. javascript封装与多态的体现
  2. cocos2dx实现经典飞机大战
  3. flex 4 布局样式
  4. Entity Framework技巧系列之六 - Tip 20 – 25
  5. 使用SevenZipSharp压缩/解压7z格式
  6. CentOS7 安装Nginx+MySQL
  7. [ios 开发笔记]:一句话笔记
  8. keras04 GAN simple
  9. BST(二叉搜索树)相关
  10. MySQL创建远程用户并授权
  11. 初入webform的杂七杂八
  12. DevExpress WinForms v18.2新版亮点(二)
  13. 2019.02.09 bzoj2839: 集合计数(容斥原理)
  14. Eclipse 各种小图标的含意
  15. java中的类、对象、方法
  16. phpStudy配置https
  17. Java 调用Web service 加入认证头(soapenv:Header)
  18. day1 RHCE
  19. 曾经我是一个只会excel的数据分析师,直到我遇到了……
  20. Visual Studio 发布 Windows Service小记

热门文章

  1. Java安全之RMI协议分析
  2. 【Java基础】常用类
  3. 【C++】《Effective C++》第四章
  4. Docker学习笔记之创建安装了nginx服务器的镜像
  5. MySQL常用的一些(就几个)聚合函数
  6. Java 在windows中配置Maven环境和阿里云镜像
  7. 用percona monitoring plugins 监控mysql
  8. SGA: allocation forcing component growth分析
  9. 核酸检测:让我明白AQS原理
  10. 网络基础知识之Cisco