题意:无向图中有n个点,m条边,现给你一个起点s。要求点u有:
- u!=s
- 原图中去掉u后改变的最短路最多
现有一种数据结构可以维护出在有向图中从起点到每个点的路径中的距离该点最近的必经点。
那么最短路图中每个必经点所控制的点的最大值就是我们所需要的答案。
这题的思路也就是这么简单,关键是学会支配树的基本用法。
做法:
- 首先维护出起点到每个点的最短路;
- 然后根据最短路画出最短路图;
- 然后对最短路图建树;
- 从后往前把当前点v的权值贡献给idom(v);
- 求出权值最大的点。
Upd:2019/7/29 加了个初始化dfn数组
#include<algorithm>
#include<vector>
#include<iostream>
#include<math.h>
#include<cstring>
#include<string>
#include<stack>
#include<map>
#include<set>
#include<unordered_map>
#include<queue>
#define q