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< ...
随机推荐
- ncurse 笔记
初始化与结束 为了使用 NCURSES 库,你应该 #include <curses.h>,在编译时,应该加上 -lncurses. stdscr 一般地,第一个函数调用必须是 inits ...
- Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite.
Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite. Problem A. Gambling Problem B. Colo ...
- Harry and magic string HDU - 5157 记录不相交的回文串对数
题意: 记录不相交的回文串对数 题解: 正着反着都来一遍回文树 用sum1[i] 表示到 i 位置,出现的回文串个数的前缀和 sun2[i]表示反着的个数 ans+=sum1[i-1]*sum2[i] ...
- API文档管理工具
系统庞大之后,前后端分离开发,前端调用后端提供的接口,请求协议一般是 HTTP,数据格式一般是 JSON.后台只负责数据的提供和计算,而完全不处理展现逻辑和样式:前端则负责拿到数据,组织数据并展现的工 ...
- 十个非常实用的MySQL命令
建赟 版主 楼主 前言 今天介绍一些MySQL常用的实用命令,都是一些比较简单的命令.已经知道的朋友,就当是巩固吧,不知道的童鞋,可以好好在自己的机器上,练习下. 0. 显示数据库 命令:s ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- activemq设置后台管理用户名密码,及生产者消息密码
activemq设置后台管理用户名密码,及生产者消息密码 1.修改conf/activemq.xml 在<broker>标签下,找到</shutdownHooks>标签.在这个 ...
- MYSQL查询查找重复的电子邮箱
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱. 示例: +----+---------+| Id | Email |+----+---------+| 1 | a@b.com | ...
- windows下mysql8.0.x简单安装!
1.官网下载mysql安装包并解压到自己喜欢的目录 2.在解压的目录下,添加my.ini配置文件,内容如下:[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录 下面是我 ...
- Java 集群高可用监控(结合阿里SLB)脚本
欢迎点评,大家一起来优化 计划思路: 只有在mysql slave java 进程状态都正常的情况下才允许nginx 运行, 否则就干掉它, 负载用的是阿里的SLB #bin/bash #邮件函数 ...