正题

POJ题目链接
给出一个图,求联通块数量和加入多少条边后会将全图变为一个最强联通块。


机翻输入输出(需要自取)

输入

第一行包含整数N:网络中的学校数量(2 <= N <= 100)。学校由前N个正整数标识。接下来的N行中的每一行都描述了一个接收者列表。第i + 1行包含学校i的接收者的标识符。每个列表以0结尾。空列表在行中仅包含一个0。

输出

你的程序应该写两行到标准输出。第一行应包含一个正整数:子任务A的解决方案。第二行应包含子任务B的解决方案。

示例输入

5
2 4 3 0
4 5 0
0
0
1 0

示例输出

1
2


解题思路

  1. 先跑一边Kosaraju算法。那么我们可以得出每一个学校在哪一个强连通分量里。然后算出入度为0 的强连通分量的个数。就是第一个答案。
  2. 读为0的强连通分量的那些强连通分量连起来。所以算出出度为0和入度为0的最大值,就是第二个的答案。
  3. 注意如果强连通分量的个数是一个,那么第二个的答案是0.

代码

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,m,out[201],w,s,s1,lt[201],s2,in[201];
bool v[201],a[201][201];
int dfs(int x)
{v[x]=true;for (int i=1;i<=n;i++){if (a[x][i] && !v[i]){dfs(i);}}out[++w]=x;
}
void dfs2(int x)
{v[x]=true;lt[x]=s;for (int i=1;i<=n;i++){if (a[i][x] && !v[i]){dfs2(i);}}
}//求强连通分量
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++){while (true){int x;scanf("%d",&x);if (x==0) break;a[i][x]=true;}}for (int i=1;i<=n;i++){if (!v[i]){dfs(i);}}memset(v,false,sizeof(v));for (int i=n;i>=1;i--){if (!v[out[i]]){s++;dfs2(out[i]);}}memset(out,0,sizeof(out));for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (a[i][j] && lt[i]!=lt[j]){out[lt[i]]++;in[lt[j]]++;//统计每个联通块的出度入度}for (int i=1;i<=s;i++){if (in[i]==0) s1++;if (out[i]==0) s2++;//统计为0的个数}if (s==1) printf("1\n0");//特判else printf("%d\n%d",s1,max(s1,s2));//输出
}

P1236-Network of Schools(学校网络)【最强联通块,Kosaraju】相关推荐

  1. 强联通块tarjan算法

    http://poj.org/problem?id=1236 第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题 ...

  2. CodeForces 1213F (强联通分量分解+拓扑排序)

    传送门 •题意 给你两个数组 p,q ,分别存放 1~n 的某个全排列: 让你根据这两个数组构造一个字符串 S,要求: (1)$\forall i \in [1,n-1],S_{pi}\leq S _ ...

  3. 洛谷 P2746 [USACO5.3]校园网Network of Schools (Tarjan,SCC缩点,DAG性质)

    P2746 [USACO5.3]校园网Network of Schools https://www.luogu.org/problem/P2746 题目描述 一些学校连入一个电脑网络.那些学校已订立了 ...

  4. POJ 1236 Network of Schools(tarjan)

    Network of Schools Description A number of schools are connected to a computer network. Agreements h ...

  5. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  6. POJ 1236 学校网络间的强连通

    题目大意: N个学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输.问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件.问题2:至少需要添加几条 ...

  7. POJ - 1236 Network of Schools(强连通缩点)

    题目链接:点击查看 题目大意:一个学校连接在一个计算机网络上,学校之间存在软件支援协议,每个学校都有它应支援的学校名单(学校A支援学校B,并不表示学校B一定支援学校A).当某校获得一个新软件时,无论是 ...

  8. 毛永胜计算机教师,中等职业学校网络计算机技术与应用

    高校论坛 2 0 1 4年 2月 (中) 中等职业学校网络计算机技术与应用 毛永胜 (内蒙古五原县高级职业中学,内蒙古五原 0 1 5 1 0 0 ) 摘要:中等职业学校教育学生的最终目标就是培养实践 ...

  9. 网络工程课程设计_某学校网络设计

    网络工程课程设计--某学校网络设计 Spring框架是一个开源的JavaEE的应用程序 主要核心是IOC(控制反转/依赖注入)和AOP(面向切面编程)两大技术 1. 需求分析 1.1 用户需求 用户需 ...

最新文章

  1. Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86
  2. 生成jpg的缩略图并添加水印
  3. netstat -an 查看端口
  4. rails应用中各数据平台的对接
  5. 闪烁点击效果css,CSS3自定义闪烁动画效果实例
  6. 数据结构——排序算法(含动态图片)
  7. 计算机鼠标介绍教学反思,《玩转鼠标》教学反思
  8. 对口高考计算机vf试题,计算机对口升学模拟答案.doc
  9. mysql锁表问题的解决方法_MYSQL锁表问题的解决方法
  10. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能
  11. python使用itchat获取微信好友列表
  12. 微信终于良心一回,更新了语音识别功能可识别粤语,广东人有福了
  13. THotKey控件 delphi
  14. 通用各类数据库密码字典
  15. 信息化建设规划_中小型企业信息化建设规划方案
  16. 心理学在游戏设计中的作用
  17. VS2013安装SVN插件
  18. js采集图片批量下载
  19. 如何在BIOS中设置RAID?
  20. 自用计算机一套送东西,购买笔记本电脑别忘记索要赠品

热门文章

  1. capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...
  2. win7系统桌面计算机怎么打的开,windows7系统双击计算机打不开怎么解决|win7双击计算机打不开的解决方法...
  3. dhcp服务器显示主机名,linux – 当我没有在dhclient.conf中定义一个时,我的DHCP服务器如何知道我的机器的主机名?...
  4. 华为交换机初始化_华为交换机恢复出厂设置
  5. win10 mysql my.cnf_MySQL配置文件无法修改的解决方法(Win10)
  6. python opencv 图像添加噪声_opencv+python同时加椒盐噪声和随机杂点噪声
  7. python getopt模块_python之getopt模块使用
  8. 关于导入c3p0-0.9.5.5.jar包引发NoClassDefFoundError、ClassNotFoundException
  9. Pytorch中的 torch.as_tensor() 和 torch.from_numpy() 的区别
  10. 高等数学下-赵立军-北京大学出版社-题解-练习8.1