问题转换成缩点求度数为0的点的个数,s点所在联通块作额外处理

缩点写的很烂调了一早上。。

#include<bits/stdc++.h>
#include<vector>
using namespace std;
#define maxn 5005
vector<int>G[maxn]; int n,m,s; int low[maxn],dfn[maxn],ind,stk[maxn],top,ins[maxn],c[maxn],cnt;
void Tarjan(int x){
dfn[x]=low[x]=++ind;
stk[++top]=x;ins[x]=;
for(int i=;i<G[x].size();i++){
int y=G[x][i];
if(!dfn[y]){
Tarjan(y);
low[x]=min(low[x],low[y]);
}
else if(ins[y])
low[x]=min(low[x],low[y]);
}
if(low[x]==dfn[x]){
cnt++;int y;
do{
y=stk[top--];
ins[y]=;
c[y]=cnt;
}while(x!=y);
}
} int main(){
cin>>n>>m>>s;
for(int i=;i<=m;i++){
int u,v;
cin>>u>>v;
G[u].push_back(v);
}
for(int i=;i<=n;i++)
if(!dfn[i])
Tarjan(i); //缩点重建
int in[maxn]={};
in[c[s]]++; for(int u=;u<=n;u++){
for(int i=;i<G[u].size();i++)
if(c[u]!=c[G[u][i]])
in[c[G[u][i]]]++;
}
int ans=;
for(int i=;i<=cnt;i++)
if(in[i]==)ans++;
cout<<ans<<'\n';
}

强连通图缩点——cf999E的更多相关文章

  1. Strongly connected HDU - 4635(判断强连通图 缩点)

    找出强联通块,计算每个连通块内的点数.将点数最少的那个连通块单独拿出来,其余的连通块合并成一个连通分量. 那么假设第一个连通块的 点数是 x  第二个连通块的点数是 y 一个强连通图(每两个点之间,至 ...

  2. BNU 20860——Forwarding Emails——————【强连通图缩点+记忆化搜索】

    Forwarding Emails Time Limit: 1000ms Memory Limit: 131072KB This problem will be judged on UVA. Orig ...

  3. poj 1236强连通图缩点

    题目链接:http://poj.org/problem?id=1236 #include <cstdio> #include <cmath> #include <algo ...

  4. Tarjan求缩点化强连通图

    Describe: 求一个有向图加多少条边可以变成一个强连通图 Solution: Tarjan缩点染色后,判断出度和入度,所有点的出度 = 0 的和 和 入度 = 0 的和的最大值即为所求. 缩点染 ...

  5. POJ1236Network of Schools[强连通分量|缩点]

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16571   Accepted: 65 ...

  6. hdu1269迷宫城堡(判断有向图是否是一个强连通图)

    1 /* 题意: 给你一个图,求这个有向图示否是一个强连通图(每两个节点都是可以相互到达的)! 思路1:按正向边dfs一遍,将经过的节点计数,如果记录的节点的个数小于n,那么就说明图按照正向边就不是连 ...

  7. hdu 4635 Strongly connected 强连通缩点

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4635 题意:给你一个n个点m条边的图,问在图不是强连通图的情况下,最多可以向图中添多少条边,若图为原来 ...

  8. [bzoj1051] [HAOI2006]受欢迎的牛 (Tarjan+缩点)

    强连通图,缩点 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受 ...

  9. poj 2553 The Bottom of a Graph(强连通分量+缩点)

    题目地址:http://poj.org/problem?id=2553 The Bottom of a Graph Time Limit: 3000MS   Memory Limit: 65536K ...

随机推荐

  1. python--面向对象:多态与封装

    一.多态 :python 天生支持多态多态指的是一类事物有多种形态 eg:文件有多种形态:文本文件,可执行文件鸭子类型:python中崇尚鸭子类型,不崇尚根据继承所得来的相似 优点 : 松耦合 每个相 ...

  2. matplotlib.pyplot 属性用法

    import matplotlib.pyplot as plt x_values = list(range(1, 1001)) y_values = [x**2 for x in x_values] ...

  3. python指定概率随机取值 理解np.random.seed()

    python指定概率随机取值参考如下: 下面是利用 np.random.choice()指定概率取样的例子: np.random.seed(0) p = np.array([0.1, 0.0, 0.7 ...

  4. nodejs 在MYSQL 数据库中插入和查询数据

    插入前的数据库: 插入后的数据库: 输出结果: demo var mysql = require('mysql'); var connection = mysql.createConnection({ ...

  5. pandas读取xlsx

    一.使用pandas读取xlsx 引用pandas库 import pandas as pd pd.read_excel(path, sheet_name=0, header=0, names=Non ...

  6. flink idea 打包jar 并放到集群上运行

    flink idea 打包jar 并放到集群上运行 在开始之前注意前提,当前项目的scala的版本要和集群上的scala一致   我已经创建好一个wordCount的flink项目   注意项目的po ...

  7. 云栖干货回顾 | 云原生数据库POLARDB专场“硬核”解析

    POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL.PostgreSQL.Oracle.POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB ...

  8. thinkphp 动态配置

    之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数. 设置新的值: C('参数名称','新的参数值 ...

  9. http经典解析

    HTTP访问流程想象用浏览器打开imooc.com网站,HTTP走过的环节: 1.首先,是对imooc.com域名解析, (1.1)浏览器搜索浏览器自身的DNS缓存. (1.2)如果浏览器没有找到自身 ...

  10. fasttext源码剖析

    fasttext源码剖析   目的:记录结合多方资料以及个人理解的剖析代码: https://heleifz.github.io/14732610572844.html http://www.cnbl ...