本文主要是介绍P2446 [SDOI2010]大陆争霸 (dijkstra),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:https://www.luogu.org/problem/P2446
Description:
带限制的最短路,途中一些点被其他点限制,当限制该点的点都被到达后方可通过该点。你可以释放无限多个机器人替你跑路。
Solution:
情景一:当前到达的点没有被保护 => 可以直接通过
情景二:当前到达的点被保护,不能通过 => 在门口等着,直到保护这个点的点都被到达,限制解除,之后方可通过
通过一个点的时刻 = max(到达该点的时刻,保护该点的所有点都被到达的最后时刻)。
Code:
code1:
#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 3100;
int n, m;
int Map[MAXN][MAXN];
int num[MAXN]; //记录有多少个点保护这个点
int protect[MAXN][MAXN];
int dis1[MAXN]; //保护这个点的所有点被摧毁的最后时刻
int dis2[MAXN]; //到达这个点的时刻
int vis[MAXN];
void dijks
这篇关于P2446 [SDOI2010]大陆争霸 (dijkstra)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!