Reachability from the Capital
题目描述
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
Input
9 9 11 21 32 31 55 66 11 89 87 1
Output
3
Input
5 4 51 22 33 44 1
Output
1
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.
题解:
强连通缩点后统计入度为0的个数ans,然后看首都的入度是否为0;如果是则ans-1;
1 #include<cstdio> 2 #include <algorithm> 3 #include <stack> 4 #include <vector> 5 #include <cstring> 6 using namespace std; 7 8 const int MAXN=1e5+10; 9 const int inf=0x3f3f3f3f; 10 struct node{ 11 int to; 12 int next; 13 }edge[MAXN*4]; 14 int head[MAXN]; 15 int val[MAXN]; 16 bool instack[MAXN]; 17 int cnt; 18 int dfn[MAXN],low[MAXN]; 19 int sum[MAXN]; 20 void add(int x,int y) 21 { 22 edge[++cnt].to =y; 23 edge[cnt].next=head[x]; 24 head[x]=cnt; 25 } 26 int Time,num; 27 stack<int >st; 28 int du[MAXN]; 29 int color[MAXN]; 30 int x[MAXN],y[MAXN]; 31 void tarjan(int u) 32 { 33 dfn[u]=low[u]= ++Time; 34 st.push(u); 35 instack[u]=true; 36 for (int i = head[u]; i !=-1 ; i=edge[i].next) { 37 int v=edge[i].to; 38 if(!dfn[v]){ 39 tarjan(v); 40 low[u]=min(low[u],low[v]); 41 } 42 else if(instack[v]) low[u]=min(low[u],dfn[v]); 43 } 44 if(dfn[u]==low[u]) 45 { 46 int x; 47 num++; 48 while(1) { 49 x=st.top(); 50 st.pop(); 51 color[x]=num; 52 instack[x]=false; 53 if(x==u) break; 54 } 55 56 } 57 } 58 59 int main() 60 { 61 int n,m,s; 62 scanf("%d%d%d",&n,&m,&s); 63 cnt=0; 64 memset(head,-1,sizeof(head)); 65 memset(instack,false, sizeof(instack)); 66 memset(sum, 0,sizeof(sum)); 67 for (int i = 1; i <=m ; ++i) { 68 scanf("%d%d",&x[i],&y[i]); 69 add(x[i],y[i]); 70 } 71 for (int i = 1; i <=n ; ++i) { 72 if(!dfn[i]) tarjan(i); 73 } 74 for (int i = 1; i <=m ; ++i) { 75 if(color[x[i]]!=color[y[i]]) 76 { 77 du[color[y[i]]]++; 78 } 79 } 80 81 int ans=0; 82 for (int i = 1; i <=num ; ++i) { 83 if(du[i]==0) ans++; 84 } 85 if(du[color[s]]==0) ans--; 86 printf("%d\n",ans); 87 return 0; 88 }
View Code
转载于:https://www.cnblogs.com/-xiangyang/p/9341449.html
Reachability from the Capital相关推荐
- Codeforces Round #490 (Div. 3)【完结】
2022.3.3 题单地址:https://codeforces.com/contest/999 目录 A. Mishka and Contest[模拟] B. Reversing Encryptio ...
- Codeforces Round #490 (Div. 3)
GET reverse() ve.pop_back() ve.back() A. Mishka and Contest 题意 给定一个序列表示题目的难度和Mishka的能力,问Mishka能解决几道问 ...
- 20190919CF训练
A.Border 给你一堆数字,你可以从这些数字取出任意多个组合成一个新的数字,问你这个新的数字在k进制下的最后一位一共有多少种情况 首先考虑k进制下的最后一位是这个数字对k取余,然后有一个扩展贝祖定 ...
- Codeforces 进阶计划:从 Specialist 到 Expert
训练计划:做 Codeforces Round (Div. 2).Codeforces Round (Div. 3) 和 Educational Codeforces Round 通过人数少于 100 ...
- 汽车高级驾驶辅助系统ADAS激光雷达创新者Cepton与Growth Capital达成企业合并协议
汽车高级驾驶辅助系统 (ADAS) 和车辆自动驾驶领域光感测距技术(激光雷达)的创新者Cepton Technologies, Inc.(以下简称"Cepton")将与Growth ...
- R语言ggplot2进行特定国家或者地区的地图可视化、在地图上标出所有首府城市所在地(plot the locations of the capital cities)
R语言ggplot2进行特定国家或者地区的地图可视化.在地图上标出所有首府城市所在地(plot the locations of the capital cities) 目录
- Onchain Capital创始人看涨BCH
BCH作为一种主流的加密货币得到了越来越多人的认可,其中不乏一些知名的业界大佬,就比如Onchain Capital的创始人,同时也是CNBC非洲"Crypto Trader"节目 ...
- 美国新桥投资集团(Newbridge Capital) [from baike]
美国新桥投资集团(Newbridge Capital) 亚洲最大的私人股权投资机构之一 美国新桥投资集团官方网站网址:http://www.newbridgecapital.com 新桥集团于199 ...
- 药师帮完成1.33亿美元D轮融资,投资方为老虎环球基金、H Capital和DCM
12月17日消息,药师帮对外宣布完成1.33亿美元D轮融资,投资方为老虎环球基金.H Capital和DCM. 此前,药师帮已经获得过多轮融资,详情见下表: 药师帮是一家医药B2B第三方平台,其所属公 ...
最新文章
- 【Android 高性能音频】Oboe 播放器开发 ( 为 OpenSL ES 配置参数以获得最佳延迟 | Oboe 音频流 | Oboe 音频设备 )
- 心事一件件的了掉,希望一切都能恢复到正常
- php 注册自动登录,php – 创建第二个自动登录用户的登录页面
- 【CodeForces - 260B 】Ancient Prophesy (暴力匹配,BF算法,日期字符串)
- 定了!这个专业研究生扩招,博士生待遇要提高!已有多所高校新增…
- web登录时候加入过滤器的用法
- 时序分析基本概念介绍——SDC概述
- switch日文键盘打中文_从塞尔达到动森,游戏中使用的中文字体有什么问题?
- 游戏热更新:游戏客户端热更新那点事
- 阿里云SLB配置HTPPS方式访问
- APP乱查征信?小心你的隐私被卖了!
- java网络编程---使用URL爬取歌曲
- 一文学会LaTeX基础
- 纯HTML代码绘制表格--初入HTML1
- Poc/Exp漏洞验证利用脚本编写
- 充电速度公式_新能源汽车充电速度多快算快充?
- 线上教育核心竞争力是什么?声网发布在线素质、职业教育解决方案
- StringUtil:字符串处理的工具类
- Web视频播放与数据安全
- 《大象 Thinking in UML》读后感
热门文章
- 访问控制权限和 ------java命名规范
- SysUtils.StrLCat
- 【MyBatis笔记】03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
- 软件测试学习指南(更新中)
- 再复杂的报表,用这3种方式,都能解决!
- Flash务实主义——Loading
- s:TextInput优化
- 饿了么超时20分钟_饿了么:5分钟;美团:8分钟......消费者:???
- IREC-GAN:在线推荐中基于模型的对抗训练强化学习
- 从GCN中学习的信息熵