Reachability from the Capital CodeForces - 999E (强连通)
2021-06-07 23:08
标签:second NPU ace 时间 reac msu 题意 HERE 并查集 There are nn cities and mm roads in Berland. Each road connects a pair of cities. The roads in Berland are one-way. What is the minimum number of new roads that need to be built to make all the cities reachable from the capital? New roads will also be one-way. Input The first line of input consists of three integers nn, mm and ss (1≤n≤5000,0≤m≤5000,1≤s≤n1≤n≤5000,0≤m≤5000,1≤s≤n) — the number of cities, the number of roads and the index of the capital. Cities are indexed from 11 to nn. The following mm lines contain roads: road ii is given as a pair of cities uiui, vivi (1≤ui,vi≤n1≤ui,vi≤n, ui≠viui≠vi). For each pair of cities (u,v)(u,v), there can be at most one road from uu to vv. Roads in opposite directions between a pair of cities are allowed (i.e. from uu to vv and from vv to uu). Output Print one integer — the minimum number of extra roads needed to make all the cities reachable from city ss. If all the cities are already reachable from ss, print 0. Examples Note The first example is illustrated by the following: For example, you can add roads (6,46,4), (7,97,9), (1,71,7) to make all the cities reachable from s=1s=1. The second example is illustrated by the following: In this example, you can add any one of the roads (5,15,1), (5,25,2), (5,35,3), (5,45,4) to make all the cities reachable from s=5s=5. 题意: 给定n个节点,M个有向边,和一个节点s。 问最小需要加多少个有向边可以使全部的节点都有到达s节点的路径。 把除了s节点的其他节点都缩成强连通分量,强连通分量不能到达s节点的,这个分量多加一个边即可到达。 缩成强连通分量的方法可以用dfs+并查集。 枚举每一个边的两边的节点a和b,如果a和b所在的集合(并查集维护出的集合)有一个边联通,那么把这两个节点对应的集合合并(并查集处理合并集合。) 时间复杂度:O(n*m) 细节见代码: Reachability from the Capital CodeForces - 999E (强连通) 标签:second NPU ace 时间 reac msu 题意 HERE 并查集 原文地址:https://www.cnblogs.com/qieqiemin/p/10719626.html9 9 1
1 2
1 3
2 3
1 5
5 6
6 1
1 8
9 8
7 13
5 4 5
1 2
2 3
3 4
4 11
思路:#include
文章标题:Reachability from the Capital CodeForces - 999E (强连通)
文章链接:http://soscw.com/index.php/essay/91958.html