poj 1236 Network of Schools(连通图)
题目链接:http://poj.org/problem?id=1236
题目大意:有一些学校,学校之间可以进行收发邮件,给出学校的相互关系,问:1.至少
要向这些学校发送多少份才能使所有的学校都能获得邮件;2.若想只发送一份即可让所有学
校都能收到邮件,则至少需要需要再进行多少次学校之间的连接。
学校之间的关系可构成图,将图进行强连通缩点成块儿后可知,每个进入数为0的点需要发
送一份;若想要所有点都连接,则需要连接数目为max(入度为0点数,出度为0点数),这
个是结论,详细证明不再贴。
代码如下:
/** Memory: 604K Time: 16MS
Language: G++ Result: Accepted **/
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;
vector<int>G[];
int n, Stack[], low[], dfn[], Time, Top, nblocks, belong[], inStack[];
int in[], out[];
void Init()
{
for(int i=; i<=n; i++)
{
G[i].clear();
low[i] = dfn[i] = in[i] = out[i] = inStack[i] = belong[i] = ;
}
Time = Top = nblocks = ;
}
void Tarjin(int u)
{
low[u] = dfn[u] = ++Time;
Stack[Top++] = u;
inStack[u] = ;
int v, len = G[u].size();
for(int i=; i<len; i++)
{
v = G[u][i];
if(!dfn[v])
{
Tarjin(v);
low[u] = min(low[u], low[v]);
}
else if(inStack[v])
low[u] = min(low[u], dfn[v]);
} if(low[u]==dfn[u])///强连通缩点
{
nblocks++;
do
{
v = Stack[--Top];
inStack[v] = ;
belong[v] = nblocks;
}
while(u!=v);
}
}
int main()
{
while(scanf("%d", &n)!=EOF)
{
Init();
int x;
for(int i=; i<=n; i++)
{
while(scanf("%d", &x), x)
G[i].push_back(x);
}
for(int i=; i<=n; i++)
{
if(!dfn[i])
Tarjin(i);
}
for(int i=; i<=n; i++)
{
int len = G[i].size();
for(int j=; j<len; j++)///标记缩点后的出入度
{
int u = belong[i];
int v = belong[G[i][j]];
if(u!=v)
{
out[u]++;
in[v]++;
}
}
}
int in_zero_num = ;
int out_zero_num = ;
for(int i=; i<=nblocks; i++)
{
if(!in[i])in_zero_num++;
if(!out[i])out_zero_num++;
}
if(nblocks==)
{
printf("1\n0\n");
continue;
}
printf("%d\n%d\n", in_zero_num, max(in_zero_num, out_zero_num));
}
return ;
}
/**
唐僧师徒四人一起去取经,沙僧是个细心的人,一路上照顾师徒四人的饮食起居,
这天他在整理大师兄的内裤,发现有个洞,然后就耐心的缝了起来,第二天发现
又有个洞,于是又补了起来,第三天 依旧还是有个洞,正当他拿起针线时,猴哥
过来,一脚踹飞了沙僧。尼玛,把洞缝上,尾巴搁哪儿?
**/
poj 1236 Network of Schools(连通图)的更多相关文章
- POJ 1236 Network of Schools 连通图缩点
题目大意:有向图连通图,第一问求至少需要多少个软件才能传输到所有学校,第二问求至少需要增加多少条路使其成为强连通图 题目思路:利用Tarjan算法经行缩点,第一问就是求缩点后入度为0的点的个数(特殊情 ...
- POJ 1236 Network of Schools(强连通 Tarjan+缩点)
POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意: 给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...
- POJ 1236 Network of Schools(强连通分量)
POJ 1236 Network of Schools 题目链接 题意:题意本质上就是,给定一个有向图,问两个问题 1.从哪几个顶点出发,能走全全部点 2.最少连几条边,使得图强连通 思路: #inc ...
- Poj 1236 Network of Schools (Tarjan)
题目链接: Poj 1236 Network of Schools 题目描述: 有n个学校,学校之间有一些单向的用来发射无线电的线路,当一个学校得到网络可以通过线路向其他学校传输网络,1:至少分配几个 ...
- poj 1236 Network of Schools(连通图入度,出度为0)
http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- poj 1236 Network of Schools(又是强连通分量+缩点)
http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- [tarjan] poj 1236 Network of Schools
主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K To ...
- POJ 1236 Network of Schools(Tarjan缩点)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16806 Accepted: 66 ...
- POJ 1236——Network of Schools——————【加边形成强连通图】
Network of Schools Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u ...
- POJ 1236 Network of Schools - 缩点
POJ 1236 :http://poj.org/problem?id=1236 参考:https://www.cnblogs.com/TnT2333333/p/6875680.html 题意: 有好 ...
随机推荐
- Linux 任务计划
一.配置cron实现自动化 使用cron实现任务自动化可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的. 1./etc/crontab文件实现自动化 cron守护 ...
- ListFragment创建及其生命周期
相同的ListFragment 带有一个无参构造 一个有参构造 在该Fragment所依附的Activity视图创建时被实例化一次 方法周期分别为1.无参构造2.onInflate3.onAttach ...
- jquery 农历日历 可自适应
在网上找了许多大牛做的农历日历,但是不是不符合项目中的要求,就是本身就有问题有Bug ,把大牛门的做日历看了n遍 自己又改造了一遍得到了这个:随后日历又要做个自适应的长宽,又在js中改造代码..... ...
- 500lines项目简介
"500行或更少" "What I cannot create, I do not understand." -- Richard Feynman <50 ...
- es6 Class的继承extends & super
Class之间可以通过extends关键字,实现继承. 子类会继承父类的属性和方法. class Point { constructor(x, y) { this.x = x; this.y = y; ...
- 关于C中struct和union长度的详解
这几天看<代码大全>中的第十三章---不常见的数据类型,里面讲解到了C语言中的struct以及对指针的解释,联想到以前看过相关的关于C语言中stuct长度的文章,只是现在有些淡忘了,因此今 ...
- SQL日期格式化应用大全
Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVE ...
- thinkphp修改及编写标签库,编辑器的使用
在view目录下创建Index_aaa.html <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- nodejs 在linux上后台运行
1.用forever 进行管理 npm install -g forever forever start index.js 2. 用自带的服务nohub nohup node index ...
- 多媒体(2):WAVE文件格式分析
目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析