#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 200 struct node
{
int u,v,next;
} bian[N*N];
int n,dfn[N],low[N],stac[N],yong,head[N],visit[N],ans,top,inde,suo[N],indegree[N],outdegree[N];
void init()
{
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
memset(head,-1,sizeof(head));
memset(stac,0,sizeof(stac));
memset(visit,0,sizeof(visit));
memset(suo,0,sizeof(suo));
memset(indegree,0,sizeof(indegree));
memset(outdegree,0,sizeof(outdegree));
ans=0;
yong=0;
top=0;
inde=0;
}
void addedge(int u,int v)
{
bian[yong].u=u;
bian[yong].v=v;
bian[yong].next=head[u];
head[u]=yong++;
}
int Max(int a,int b)
{
return a>b?a:b;
}
int Min(int a,int b)
{
return a>b?b:a;
}
void tarjan(int u)
{
dfn[u]=low[u]=++inde;
stac[++top]=u;
visit[u]=1;
int i;
for(i=head[u]; i!=-1; i=bian[i].next)
{
if(!dfn[bian[i].v])
{
tarjan(bian[i].v);
low[u]=Min(low[u],low[bian[i].v]);
}
else if(visit[bian[i].v]==1)
low[u]=Min(low[u],dfn[bian[i].v]); }
if(dfn[u]==low[u])
{
ans++;
int t;
do
{
t=stac[top--];
visit[t]=2;
suo[t]=ans;
}
while(t!=u);
}
}
int main()
{
int t,n,m,i,fin,fout;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
init();
for(i=1; i<=n; i++)
{
while(scanf("%d",&m),m)
addedge(i,m);
}
for(i=1; i<=n; i++)
if(visit[i]!=2)
tarjan(i);
if(ans==1) {//important
printf("0\n");
continue;
}
for(i=0;i<yong;i++)
if(suo[bian[i].u]!=suo[bian[i].v]) {
indegree[suo[bian[i].u]]++;
outdegree[suo[bian[i].v]]++;
}
fin=0;
fout=0;
for(i=1; i<=ans; i++)
{
if(indegree[i]==0)
fin++;
if(outdegree[i]==0)
fout++;
}
printf("%d\n",Max(fin,fout));
} return 0;
}

nyoj 120 建边构强连通的更多相关文章

  1. nyoj 120 校园网络

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=120 思路:先将原图强连通缩点为新图,统计新图中入度,出度为0的点的个数,两者取最大值即为 ...

  2. hdu 3836 强连通+缩点:加边构强连通

    #include<stdio.h>//求出其所有的强连通分量缩点,选出出度和入度最大的那个就是要求的边 #include<string.h> #include<stdli ...

  3. nyoj 120 校园网络(求添加多少条边使整个图强连通)

    校园网络 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一 ...

  4. HDU5934 强连通分量

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5934 根据距离关系建边 对于强连通分量来说,只需引爆话费最小的炸弹即可引爆整个强连通分量 将所有的强连通分 ...

  5. hdu3861 The King’s Problem 强连通缩点+DAG最小路径覆盖

    对多校赛的题目,我深感无力.题目看不懂,英语是能懂的,题目具体的要求以及需要怎么做没有头绪.样例怎么来的都不明白.好吧,看题解吧. http://www.cnblogs.com/kane0526/ar ...

  6. BZOJ 1179 Atm 题解

    BZOJ 1179 Atm 题解 SPFA Algorithm Tarjan Algorithm Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来 ...

  7. 【Tarjan】+【SPFA】APIO2009 Atm

    一.算法介绍 tarjan——求解有向图强连通分量.这个算法在本人的一篇blog中有介绍,这里就不赘述了.贴上介绍tarjan的的blog链接:http://www.cnblogs.com/Maki- ...

  8. hdu 4685 简单匹配+Tarjan算法

    思路:首先看到这题以为能用poj1904的模版直接A掉,WA了几次,然后又TLE了几次.还是想到了正解. 一开始我想的大致方向已经是对的了.先是由王子向每个喜欢的公主建边,再求一次最大匹配,找出匹配后 ...

  9. 教你MySQL Binlog实用攻略

    本文由云+社区发表 1.概述 binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undo log是完全不同的日志:其主要是用来记录对mysql数据更新或潜在发 ...

随机推荐

  1. 高效使用hive

    工作中常常使用hive.熟练使用hvie的配置參数能够更加高效的使用Hive Hive option: hive -f   script.hql : 从文件script.hql中的读取hql运行 hi ...

  2. Reset and Clear Recent Items and Frequent Places in Windows 10

    https://www.tenforums.com/tutorials/3476-reset-clear-recent-items-frequent-places-windows-10-a.html ...

  3. nyoj--105--九的余数(水题)

    九的余数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数. 输入 第一行有一个整 ...

  4. I NEED A OFFER!(hdoj--1203--01背包)

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. 2017-3-9 leetcode 283 287 289

    今天操作系统课,没能安心睡懒觉23333,妹抖龙更新,可惜感觉水分不少....怀念追RE0的感觉 =================================================== ...

  6. Java:笔记-1

    ylbtech-Java:笔记-1 1.返回顶部 1. /** * 简介请求 * @return */ @RequestMapping("/JJ") public String j ...

  7. expdp通过dblink远端导出

    环境说明: db62是源端 rac数据库 dw03为需要导入的目标端数据库单机,实例名,服务名,字符串名都为dw03 数据库版本:11.2.0.4  操作系统:rehat 6.7 1.创建dblink ...

  8. kindeditor文本编辑器乱码中乱码问题解决办法

    这个问题我已经解决掉了,不是更改内容的编码格式,只要将lang/zh_CN.js  这个文件的编码转换成unicode即可 操作方法是 用记事本打开这个文件,另存为,然后更改文件的编码格式为unico ...

  9. [hihocoder][Offer收割]编程练习赛46

    AEIOU 选出的子串中由AEI构成的子串和由OU构成的子串之间并没有什么关系,分别算出最长的加起来. #pragma comment(linker, "/STACK:102400000,1 ...

  10. css 画三角形

    <div class='triangle-rihgt'></div> <div class='triangle-top'></div> <div ...