E. Reachability from the Capital(tarjan+dfs)




求联通分量个数,在dfs一次
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <cassert>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#pragma comment(linker, "/stck:1024000000,1024000000")
#define lowbit(x) (x&(-x))
#define max(x,y) (x>=y?x:y)
#define min(x,y) (x<=y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.1415926535897932384626433832
#define ios() ios::sync_with_stdio(true)
#define INF 0x3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
int n,m,cap,ans=,cnt=,top=-,pos=;
int head[],low[],dnf[],Stack[],vis[];
vector<int>vv[],fv[];
int belong[],in[],u[],v[];
void tarjan(int u)
{
low[u]=dnf[u]=++cnt;
Stack[++top]=u;
vis[u]=;
int v;
for(int i=;i<fv[u].size();i++)
{
v=fv[u][i];
if(!dnf[v])
{
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(vis[v]) low[u]=min(dnf[v],low[u]);
}
if(low[u]==dnf[u])
{
ans++;
do
{
v=Stack[top--];
belong[v]=ans;
vis[v]=;
}while(u!=v);
}
}
void solve()
{
memset(head,-,sizeof(head));
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
if(!dnf[i]) tarjan(i);
}
void dfs(int u)
{
vis[u]=;
for(int i=;i<vv[u].size();i++)
if(!vis[vv[u][i]]) dfs(vv[u][i]);
}
int main()
{
scanf("%d%d%d",&n,&m,&cap);
for(int i=;i<=m;i++)
{
scanf("%d%d",&u[i],&v[i]);
fv[u[i]].push_back(v[i]);
}
solve();
memset(in,,sizeof(in));
for(int i=;i<=m;i++)
{
if(belong[u[i]]==belong[v[i]]) continue;
vv[belong[u[i]]].push_back(belong[v[i]]);
in[belong[v[i]]]++;
}
memset(vis,,sizeof(vis));
dfs(belong[cap]);
int inf=;
for(int i=;i<=ans;i++)
inf+=(!in[i] && !vis[i]);
printf("%d\n",inf);
return ;
}
E. Reachability from the Capital(tarjan+dfs)的更多相关文章
- Pursuit For Artifacts CodeForces - 652E  (Tarjan+dfs)
		Pursuit For Artifacts CodeForces - 652E Johnny is playing a well-known computer game. The game are i ... 
- 【NOIP模拟题】Graph(tarjan+dfs)
		似乎我搞得太复杂了? 先tarjan缩点然后dfs就行了QAQ. (我不说我被一个sb错调了半个小时....不要以为缩点后dfs就可以肆无忌惮的不加特判判vis了.. bfs的做法:减反图,然后从大到 ... 
- 割点(Tarjan算法)【转载】
		本文转自:www.cnblogs.com/collectionne/p/6847240.html 供大家学习 前言:之前翻译过一篇英文的关于割点的文章(英文原文.翻译),但是自己还有一些不明白的地方, ... 
- 割点(Tarjan算法)
		本文可转载,转载请注明出处:www.cnblogs.com/collectionne/p/6847240.html .本文未完,如果不在博客园(cnblogs)发现此文章,请访问以上链接查看最新文章. ... 
- Cleaning Robot (bfs+dfs)
		Cleaning Robot (bfs+dfs) Here, we want to solve path planning for a mobile robot cleaning a rectangu ... 
- 【洛谷2403】[SDOI2010] 所驼门王的宝藏(Tarjan+dfs遍历)
		点此看题面 大致题意: 一个由\(R*C\)间矩形宫室组成的宫殿中的\(N\)间宫室里埋藏着宝藏.由一间宫室到达另一间宫室只能通过传送门,且只有埋有宝藏的宫室才有传送门.传送门分为3种,分别可以到达同 ... 
- pku 2488 A Knight's Journey (搜索 DFS)
		A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28697 Accepted: 98 ... 
- bzoj2730矿场搭建(Tarjan割点)
		2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1771 Solved: 835[Submit][Statu ... 
- 蓝桥杯---数独(模拟 || dfs)
		[编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ... 
随机推荐
- leetcode 题解 || Longest Common Prefix 问题
			problem: Write a function to find the longest common prefix string amongst an array of strings. 寻找 0 ... 
- Android 6.0 开发人员对系统权限的使用与练习(Permissions Best Practices)
			Permissions Best Practices 在安装的过程中,用户非常easy忽略权限请求. 假设一个用户相应用感觉沮丧或者操心泄漏个人信息,那么这些用户就会不用他或者卸载它. 怎样规避这个问 ... 
- linux 下的文件搜索、可执行文件搜索
			1. whereis 与 which 速度快,只是模糊查询,例如查询 $ whereis mysql,则会将mysql, mysql.ini, mysql*所在的目录都找出来: whereis 查看的 ... 
- Linux xhost命令详解
			xhost 命令用途 控制什么人可以访问当前主机上的增强 X-Windows. 语法 xhost [ + | - ] [ Name ] "+"表示增加,"-"表 ... 
- 138.安全退出的异常,要用throw 尽量不用exit(0)
			#include<iostream> #include<cstdlib> using namespace std; ////非安全退出,结束进程, //C++ 必须释放对象,最 ... 
- web.xml配置详解(转载)
			一.web.xml配置文件常用元素及其意义预览 1 <web-app> 2 3 <!--定义了WEB应用的名字--> 4 <display-name></di ... 
- hbase的优化(全)
			高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状 ... 
- java中对象和对象引用的区别
			1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一 ... 
- 细数SuperComputer最新排名和常见Benchmark类型
			在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ... 
- Java中如何解决线程安全问题
			给出一个问题,如下: 解决方案如下: public class Demo_5 { public static void main(String[] args) { //创建一个窗口 TicketWin ... 
