BZOJ 1579 [Usaco2009 Feb]Revamping Trails 道路升级
堆优化的dijkstra。
把一个点拆成k个。
日常空间要开炸一次。。
//Twenty
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
typedef long long LL;
using namespace std;
const int maxn=+;
const int maxm=*+;
int n,m,k,fir[maxn],nxt[maxm],to[maxm],vis[maxn][],dis[maxn][],ecnt;
LL val[maxm],ans;
struct node {
int id,k;
LL d;
friend bool operator <(const node &A,const node &B) {
return A.d>B.d;
}
node(){}
node(int id,LL d,int k):id(id),d(d),k(k){}
};
priority_queue<node>que;
void add(int u,int v,int w) {
nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v; val[ecnt]=w;
nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u; val[ecnt]=w;
}
void dijkstra() {
memset(dis,,sizeof(dis));
dis[][]=;
que.push(node(,,));
while(!que.empty()) {
node x=que.top();
vis[x.id][x.k]=;
que.pop();
if(x.id==n) {ans=x.d; break;}
for(int i=fir[x.id];i;i=nxt[i]) {
if(!vis[to[i]][x.k]&&x.d+val[i]<dis[to[i]][x.k]) {
dis[to[i]][x.k]=x.d+val[i];
que.push(node(to[i],x.d+val[i],x.k));
}
if(x.k+<=k&&!vis[to[i]][x.k+]&&x.d<dis[to[i]][x.k+]) {
dis[to[i]][x.k+]=x.d;
que.push(node(to[i],x.d,x.k+));
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=m;i++) {
int x,y; LL z;
scanf("%d%d%lld",&x,&y,&z);
add(x,y,z);
}
dijkstra();
printf("%lld\n",ans);
return ;
}
BZOJ 1579 [Usaco2009 Feb]Revamping Trails 道路升级的更多相关文章
- Bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级  dijkstra,堆,分层图
		
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1573 Solv ...
 - BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级( 最短路 )
		
最短路...多加一维表示更新了多少条路 -------------------------------------------------------------------------------- ...
 - bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级  -- 分层图最短路
		
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec Memory Limit: 64 MB Description 每天,农夫 ...
 - bzoj  1579: [Usaco2009 Feb]Revamping Trails 道路升级   优先队列+dij
		
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1768 Solv ...
 - bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级——分层图+dijkstra
		
Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i ...
 - BZOJ 1579 [Usaco2009 Feb]Revamping Trails 道路升级:dijkstra 分层图【将k条边改为0】
		
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1579 题意: 给你一个无向图,n个点,m条边,每条边有边权w[i]. 你可以将其中的k(k ...
 - BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级 分层图最短路 + Dijkstra
		
Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i ...
 - bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级【分层图+spfa】
		
至死不用dijskstra系列2333,洛谷上T了一个点,开了O2才过 基本想法是建立分层图,就是建k+1层原图,然后相邻两层之间把原图的边在上一层的起点与下一层的终点连起来,边权为0,表示免了这条边 ...
 - 【BZOJ 1579】 1579: [Usaco2009 Feb]Revamping Trails 道路升级 (最短路)
		
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M< ...
 
随机推荐
- arr = map(float,arr)输出问题
			
代码: arr = ['22','44','66','88']arr = map(float,arr)print(arr) 输出: <map object at 0x000001B48C30EE ...
 - postgresql-创建主键自增的表
			
之前一直用的mysql,这个也基本上是主流,主键自增是很多建表规范中的硬性要求,不过这两种数据库主键自增的区别还是很大的 通常navicat中对mysql 主键自增直接客户端指定即可,不过对PG貌似不 ...
 - JQuery AJAX 通过一般处理程序 取列表
			
由于上一篇的积累 这一个就简单了 也就是把反回了字符串 显示到table中 $("#btnSearch").click(function () { $.post("Cur ...
 - 1-电脑C盘(系统盘)清理
			
推荐,亲测有效! 转自: https://baijiahao.baidu.com/s?id=1612762644229315967&wfr=spider&for=pc
 - USACO2008 Time Management /// 贪心 oj24386
			
题目大意: 有N个工作被编号为1..N (1 ≤ N ≤ 1,000) 完成第i个工作需要T_i (1 ≤ T_i ≤ 1,000)的时间 第i个工作需在S_i (1 ≤ S_i ≤ 1,000,00 ...
 - LeetCode 31. Next Permutation【Medium】
			
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
 - input的placeholder颜色修改
			
input[type=text]::-webkit-input-placeholder { /* WebKit browsers / color: #999; } input[type=text]:- ...
 - jboss未授权Getshell
			
一.jboss未授权访问Getshell 1.jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system:type=Server ...
 - 前端常用的库和实用技术之JavaScript 模块化
			
模块化概念 AMD是requirejs在推广过程中对模块化定义的规范化产出. 异步加载模块,依赖前置,提前执行 Define定义模块define(['require','foo'],function( ...
 - 尝试 zabbix 小记
			
server : Ubuntu 16.04 zabbix: 2.2.23源码包 安装 gcc,curl,make,snmp 软件和zabbix依赖一些php 扩展包 sudo apt-get inst ...