本文主要是介绍P4822 [BJWC2012]冻结 (分层图最短路),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:https://www.luogu.org/problem/P4822
有 N 个城市,M 条双向的道路。城市编号为 1~N,我们在 1 号城市,需要到 N 号城市,怎样才能最快地到达呢?
现在,我们一共有 K 张可以使时间变慢 50%的 SpellCard,也就是说,在通过某条路径时,我们可以选择使用一张卡片,这样,我们通过这一条道路的时间 就可以减少到原先的一半。需要注意的是:
- 在一条道路上最多只能使用一张 SpellCard。
- 使用一张SpellCard 只在一条道路上起作用。
- 你不必使用完所有的 SpellCard。
给定以上的信息,你的任务是:求出在可以使用这不超过 K 张时间减速的 SpellCard 之情形下,从城市1 到城市N最少需要多长时间。
代码:
#include<bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
const int INF = 0x3f3f3f3f;
const int MAXN = 3000;
const int MAXM = 1e5 * 3;
int n, m, k;
struct Edge
{int to, w, nxt;
}edge[MAXM];
int head[MAXN], t = 1;
void init()
{memset(head, -1, sizeof(h
这篇关于P4822 [BJWC2012]冻结 (分层图最短路)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!