分层图最短路( LYOi Online Judge 初中的最后一天)
代码参照: 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 }
分层图最短路( LYOi Online Judge 初中的最后一天)的更多相关文章
- poj3635Full Tank?[分层图最短路]
		Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7248 Accepted: 2338 Descri ... 
- HDU 5669 线段树优化建图+分层图最短路
		用线段树维护建图,即把用线段树把每个区间都标号了,Tree1中子节点有到达父节点的单向边,Tree2中父节点有到达子节点的单向边. 每次将源插入Tree1,汇插入Tree2,中间用临时节点相连.那么T ... 
- BZOJ 2763 分层图最短路
		突然发现我不会分层图最短路,写一发. 就是同层中用双向边相连,用单向边连下一层 #include <cstdio> #include <algorithm> #include ... 
- 【网络流24题】 No.15 汽车加油行驶问题 (分层图最短路i)
		[题意] 问题描述:给定一个 N*N 的方形网格,设其左上角为起点◎, 坐标为( 1, 1), X 轴向右为正, Y轴向下为正, 每个方格边长为 1, 如图所示. 一辆汽车从起点◎出发驶向右下角终点▲ ... 
- 【网络流24题】 No.14 孤岛营救问题 (分层图最短路)
		[题意] 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛, 营救被敌军俘虏的大兵瑞恩. 瑞恩被关押在一个迷宫里, 迷宫地形复杂, 但幸好麦克得到了迷宫的地形图. 迷宫的外形是 ... 
- BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路
		BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路 Description “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切, ... 
- BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路
		BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M ... 
- Nowcoder contest 370H Rinne Loves Dynamic Graph【分层图最短路】
		<题目链接> 题目大意:Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图.当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动. ... 
- ACM-ICPC 2018 南京赛区网络预赛 L 【分层图最短路】
		<题目链接> 题目大意: 有N个城市,这些城市之间有M条有向边,每条边有权值,能够选择K条边 边权置为0,求1到N的最短距离. 解题分析: 分层图最短路模板题,将该图看成 K+1 层图,然 ... 
随机推荐
- 用隧道协议实现不同dubbo集群间的透明通信
			用隧道协议实现不同dubbo集群间的透明通信 前言 笔者最近完成了一个非常有意思的隧道机制(已在产线运行),可以让注册到不同zookeeper之间的dubbo集群之间能够正常进行通信.如下图所示: 例 ... 
- [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier
			[从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 0x00 摘要 0x01 ... 
- windows环境搭建
			GO语言环境配置: 安装GOlang,添加到环境变量path 默认会创建环境变量GOPATH,其中存放代码和编译后的工程文件等,用户可以根据个人需要,在别的路径下创建gopath,并添加到环境变量中. ... 
- 支持向量机(SVM)原理详解
			SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:SVM还包括核技巧, ... 
- 实现一个简单的 Linux Shell(C++)
			Implement a simple command interpreter in Linux. The interpreter should: support both internal and e ... 
- Linux学习笔记 | 常见错误之VMware启动linux后一直黑屏
			方法1: 宿主机(windows)管理员模式运行cmd 输入netsh winsock reset 然后重启电脑 netsh winsock reset命令,作用是重置 Winsock 目录.如果一台 ... 
- canvas多重阴影发光效果
			canvas多重阴影发光效果 前言 在一个项目中,客户提了一个发光的效果,效果图如下: 阴影 有的人可能会说,这个用阴影其实就可以实现.但是从图中可以看出,是一个比较强烈的发光效果.实际的应用过程中我 ... 
- library cache pin解决方法
			library cache pin大部分都是因为编译存储过程造成的 查找造成问题的数据库对象(一般为存储过程) SELECT * FROM v$session_wait WHERE event = ' ... 
- Kubernetes 开船记-脚踏两只船:用 master 服务器镜像克隆出新集群
			自从2020年2月23日 园子全站登船 之后,我们一边感叹"不上船不知道,一上船吓一跳" -- kubernetes 比 docker swarm 强大太多,一边有一个杞人忧天的担 ... 
- ALV中的分隔条(SPLITTER_CONTROL)
			如上图,可以做成左右的分割,当然也可以做成上下的分割效果,在每个分割的容器内,显示各自的内容. 需要使用的class: cl_gui_splitter_container, cl_gui_custom ... 
