题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=120

思路:先将原图强连通缩点为新图,统计新图中入度,出度为0的点的个数,两者取最大值即为答案。

代码如下:

#include "stdio.h"
#include "string.h"
#include "stack"
#include "vector"
using namespace std; #define N 105
#define M 10005 struct node
{
int x,y;
int next;
}edge[2*M];
int idx,head[N];
void Init(){ idx=0; memset(head,-1,sizeof(head)); }
inline int MIN(int a,int b){ return a<b?a:b; }
inline int MAX(int a,int b){ return a>b?a:b; }
void Add(int x,int y)
{
edge[idx].x=x;
edge[idx].y=y;
edge[idx].next=head[x];
head[x]=idx++;
} bool vis[N];
int dfn[N],low[N];
int dfs_clock;
int countt;
int belong[N];
stack<int> q; void DFS(int x) //强连通缩点算法
{
int i,y;
q.push(x);
vis[x] = true;
dfn[x] = low[x] = ++dfs_clock;
for(i=head[x]; i!=-1; i=edge[i].next)
{
y = edge[i].y;
if(!dfn[y])
{
DFS(y);
low[x] = MIN(low[x],low[y]);
}
else if(vis[y])
low[x] = MIN(dfn[y],low[x]);
}
if(low[x]==dfn[x])
{
int temp;
countt++;
while(1)
{
temp = q.top();
q.pop();
belong[temp] = countt;
vis[temp] = false;
if(temp==x) break;
}
}
} int ru_du[N],chu_du[N]; int Solve(int n)
{
int i;
int x,y;
dfs_clock = countt = 0;
memset(dfn,0,sizeof(dfn));
memset(vis,false,sizeof(vis));
memset(belong,0,sizeof(belong));
for(i=1; i<=n; ++i)
{
if(!dfn[i])
DFS(i);
}
if(countt==2) return 0; //该图原本就是强连通图,return 0;
memset(ru_du,0,sizeof(ru_du));
memset(chu_du,0,sizeof(chu_du));
for(i=0; i<idx; ++i)
{
x = belong[edge[i].x];
y = belong[edge[i].y];
if(x!=y) //统计入度,出度
{
chu_du[x]++;
ru_du[y]++;
}
}
int ru_0=0,chu_0=0;
for(i=1; i<countt; ++i)
{
if(ru_du[i]==0) ru_0++;
if(chu_du[i]==0) chu_0++;
}
int ans = MAX(ru_0,chu_0); //return 入度,出度最大的那个数
return ans;
} int main()
{
int T;
int n;
int i,k;
scanf("%d",&T);
while(T--)
{
Init();
scanf("%d",&n);
for(i=1; i<=n; ++i)
{
while(scanf("%d",&k),k)
Add(i,k);
}
printf("%d\n",Solve(n));
}
return 0;
}

nyoj 120 校园网络的更多相关文章

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

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

  2. 洛谷 P2812 校园网络【[USACO]Network of Schools加强版】 解题报告

    P2812 校园网络[[USACO]Network of Schools加强版] 题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是 ...

  3. 洛谷P2812 校园网络[数据加强版] [Tarjan]

    题目传送门 校园网络 题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮 ...

  4. 洛谷—— P2812 校园网络

    P2812 校园网络 题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮 ...

  5. nyoj 199 无线网络覆盖

    无线网络覆盖 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学. 现在学校给了他一个 ...

  6. LINUX下的远端主机登入 校园网络注册 网络数据包转发和捕获

    第一部分:LINUX 下的远端主机登入和校园网注册 校园网内目的主机远程管理登入程序 本程序为校园网内远程登入,管理功能,该程序分服务器端和客户端两部分:服务器端为remote_server_udp. ...

  7. P2812 校园网络【[USACO]Network of Schools加强版】

    题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮助他们. 题目描述 共 ...

  8. 洛谷P2812校园网络【Network of Schools加强版】

    题目背景 浙江省的几所\(OI\)强校的神犇发明了一种人工智能,可以\(AC\)任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被\(♂\)掏\(♂\)空,他 ...

  9. nyoj 199-无线网络覆盖 (ceil())

    199-无线网络覆盖 内存限制:64MB 时间限制:3000ms 特判: No 通过数:4 提交数:13 难度:3 题目描述: 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆 ...

随机推荐

  1. 数组(Array)的使用方法

    本文内容:        1.概述         2.数组基础         3.结合for循环与arr.length,在数组尾部插入数值         4.利用'concat','join'实 ...

  2. 【循序渐进学Python】6.Python中的函数

    1. 创建函数 一个函数代表一个行为并且返回一个结果(包括None),在Python中使用def关键字来定义一个函数,如下: def hello(name): print 'hello,' + nam ...

  3. PHP限制HTML内容中图片必须是本站的方法

    本文实例讲述了PHP限制HTML内容中图片必须是本站的方法.分享给大家供大家参考.具体实现方法如下: 1. PHP代码如下: <?php $dom = new DOMDocument; $dom ...

  4. 【C#进阶系列】03 配置文件管理与程序集的引用版本重定向

    先来点与标题不相关的: CLR支持两种程序集:弱命名程序集和强命名程序集. 两者的区别在于强命名程序集使用发布者的公钥和私钥进行签名.由于程序集被唯一性地标识,所以当应用程序绑定到强命名程序集时,CL ...

  5. 在phpwind内容页使用百度分享进行图片分享

    在phpwind内容页使用百度分享进行图片分享时,百度分享默认提取到的图片不一定是主题正文内容中的图片,需要使用百度提供的配置机制自行调整. 整个代码添加的位置在此不论,主要原理是在主题正文区域提取图 ...

  6. 泛函编程(14)-try to map them all

    虽然明白泛函编程风格中最重要的就是对一个管子里的元素进行操作.这个管子就是这么一个东西:F[A],我们说F是一个针对元素A的高阶类型,其实F就是一个装载A类型元素的管子,A类型是相对低阶,或者说是基础 ...

  7. [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存

    文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的 ...

  8. 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...

  9. 数据库的sacle-up和scale-out与sharding技术区分

    scale 英文是扩展的意思. 数据库要进行扩展,指的是存储系统不够,或者性能不够,要提升的时候,就要进行扩展. 分为向上扩展和横向扩展,这就像一个人往上面发展与横向发展两种思路. scale-up: ...

  10. Follow me to learn what is repository pattern

    Introduction Creating a generic repository pattern in an mvc application with entity framework is th ...