http://codeforces.com/gym/101617
题意:这个老板想检查自己酒店的安全性,他的手下有一些保安,每个保安有自己一个特有的带有标号的勋章,房间与房间之前有门相连。
每个门只允许特定的一个范围的勋章标号打开门。问:有多少个保安能从s走到d。
首先对于这个题能够建图,并且我们清楚不断的从一个房间进入下一个房间,勋章范围一定是在减小或者不变。
那么最后的范围一定是所有房间允许范围的交集,那么我们假如记录房间允许范围所有的点,然后排序呢?
这样每相邻的两点,一定是最小的区间,假如这个区间范围的点能从s走到d的话,那么这个区间就算在答案里面。
那么思路定下来之后,就得跑一个dfs了。
/// .-~~~~~~~~~-._ _.-~~~~~~~~~-.
/// __.' ~. .~ `.__
/// .'// \./ \\`.
/// .'// | \\`.
/// .'// .-~"""""""~~~~-._ | _,-~~~~"""""""~-. \\`.
/// .'//.-" `-. | .-' "-.\\`.
/// .'//______.============-.. \ | / ..-============.______\\`.
/// .'______________________________\|/______________________________`.
#pragma GCC optimize(2)
#pragma comment(linker, "/STACK:102400000,102400000")
#include
#include
#include
#include