【luogu P2939 [USACO09FEB]改造路Revamping Trails】 题解
题目链接:https://www.luogu.org/problemnew/show/P2939
本来说是双倍经验题,跟飞行路线一样的,结果我飞行路线拿deque优化SPFA过了这里过不了了。
所以多学一种优先队列优化。
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const ll maxn = 200000 + 10;
const ll inf = 2147483647;
inline ll read()
{
ll k=0,f=1;
char c=getchar();
while(!isdigit(c))
{
if(c=='-')f=-1;
c=getchar();
}
while(isdigit(c))
{
k=(k<<1)+(k<<3)+c-48;
c=getchar();
}
return k*f;
}
ll n, m, k, s, end, dis[maxn][30];
bool vis[maxn][30];
struct edge{
ll from, len, to, next;
}e[maxn<<2];
ll head[maxn], cnt = 0;
struct que{
ll a, b;
};
struct cmp{
bool operator ()(que &x, que &y)
{
return dis[x.a][x.b] > dis[y.a][y.b];
}
};
priority_queue<que, vector<que>, cmp> q;
void add(ll u, ll v, ll w)
{
e[++cnt].from = u;
e[cnt].to = v;
e[cnt].len = w;
e[cnt].next = head[u];
head[u] = cnt;
}
void SPFA()
{
memset(dis, 127, sizeof(dis));
memset(vis, 0, sizeof(vis));
q.push((que){s,0});
dis[s][0] = 0;
vis[s][0] = 1;
while(!q.empty())
{
que now = q.top(); q.pop();
vis[now.a][now.b] = 0;
for(ll i = head[now.a]; i != -1; i = e[i].next)
{
if(dis[e[i].to][now.b] > dis[now.a][now.b] + e[i].len)
{
dis[e[i].to][now.b] = dis[now.a][now.b] + e[i].len;
if(vis[e[i].to][now.b] == 0)
{
vis[e[i].to][now.b] = 1;
q.push((que){e[i].to, now.b});
}
}
if(now.b + 1 <= k)
{
if(dis[e[i].to][now.b + 1] > dis[now.a][now.b])
{
dis[e[i].to][now.b + 1] = dis[now.a][now.b];
if(vis[e[i].to][now.b + 1] == 0)
{
vis[e[i].to][now.b + 1] = 1;
q.push((que){e[i].to, now.b + 1});
}
}
}
}
}
}
int main()
{
memset(head, -1, sizeof(head));
n = read(); m = read(); k = read();
s = 1, end = n;
for(ll i = 1; i <= m; i++)
{
ll u, v, w;
u = read(); v = read(); w = read();
add(u, v, w); add(v, u, w);
}
SPFA();
printf("%lld",dis[end][k]);
return 0;
}
【luogu P2939 [USACO09FEB]改造路Revamping Trails】 题解的更多相关文章
- 洛谷 P2939 [USACO09FEB]改造路Revamping Trails 题解
P2939 [USACO09FEB]改造路Revamping Trails 题目描述 Farmer John dutifully checks on the cows every day. He tr ...
- LUOGU P2939 [USACO09FEB]改造路Revamping Trails
题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 ...
- P2939 [USACO09FEB]改造路Revamping Trails
P2939 [USACO09FEB]改造路Revamping Trails 同bzoj2763.不过dbzoj太慢了,bzoj又交不了. 裸的分层图最短路. f[i][j]表示免费走了j条路到达i的最 ...
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails
题意翻译 约翰一共有\(N\))个牧场.由\(M\)条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场\(1\)出发到牧场\(N\)去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰 ...
- 洛谷 P2939 [USACO09FEB]改造路Revamping Trails
题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 ...
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails(最短路)
题目描述 Farmer John dutifully checks on the cows every day. He traverses some of the M (1 <= M <= ...
- Luogu 2939 [USACO09FEB]改造路Revamping Trails && Luogu 4568 [JLOI2011]飞行路线
双倍经验 写这两题之前被大佬剧透了呜呜呜. 分层图+最短路. 因为有$k$次机会能够把路径的费用变为$0$,我们可以建$k + 1$层图,对于每一层图我们把原来的边权和双向边连到上面去,而对于层与层之 ...
- P2939 [USACO09FEB]改造路Revamping Trails(分层图最短路)
传送门 完了我好像连分层图最短路都不会了……果然还是太菜了…… 具体来说就是记录一个步数表示免费了几条边,在dijkstra的时候以步数为第一关键字,距离为第二关键字.枚举边的时候分别枚举免不免费下一 ...
- [USACO09FEB] 改造路Revamping Trails | [JLOI2011] 飞行路线
题目链接: 改造路 飞行路线 其实这两道题基本上是一样的,就是分层图的套路题. 为什么是分层图呢?首先,我们的选择次数比较少,可以把这几层的图建出来而不会爆空间.然后因为选择一个边权为0的路线之后我们 ...
随机推荐
- TOJ 2857 Stockbroker Grapevine
描述 Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of s ...
- js 标签属性与导航
导航标签的方法: 一 , 全局导航: 1.通过by id导航 <!DOCTYPE html><html lang="en"><head> &l ...
- nginx禁止对写操作timeout时retry
1) nginx禁止对写操作timeout时retry 以前遇到的一个case,业务那边说一笔请求从nginx端发送给后端tomcat了2次(落在两个不同的tomcat节点上).后来发现是nginx发 ...
- ArrayList集合长度的问题
// 每次集合中实际包含的元素个数(count)超过了可包含元素的个数capcity //的时候集合就会向内存中申请多开启一倍的空间,来保证集合长度够用 static void Main(strin ...
- sql查询某字段的相同值
sql查询某字段的相同值: SELECT * FROM table WHERE col in (SELECT col FROM table GROUP BY col HAVING COUNT (col ...
- TortoiseSVN安装
安装说明 开发人员强烈建议使用IDE中的SVN插件更加智能与人性化. 首先安装SVN客户端,windows一般选择乌龟客户端https://tortoisesvn.net/downloads.html ...
- [SQL SERVER系列]工作经常使用的SQL整理,实战篇(二)[原创]
工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇(三) 接着上一篇“工作经常使用的SQL整 ...
- grunt 常用插件有哪些?
作者:顾城链接:https://www.zhihu.com/question/21917526/answer/19747259来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- Personal Geodatabase - Can't Create New or Open Existing
来自:http://forums.arcgis.com/threads/32110-Personal-Geodatabase-Can-t-Create-New-or-Open-Existing Per ...
- Java web的安全约束--Basic验证
要进行basic验证是用户名/口令机制,当浏览器要访问受保护的资源时,服务器会要求一个用户名和口令,只有输入了合法的用户名和口令.服务器才发送资源.用户名和口令可以存储在安全域中.安全域是标识一个We ...