题目链接:https://vjudge.net/problem/POJ-1236

题目:有向图,有若干个连通图,点之间有单向边边就可以单向传递信息,问:

(1)至少需要发送几份信息才能使得每个点都传递到信息

(2)至少需要加几条边,才能使得“把一份信息发送到任意某个点就能传播到其他所有点”成立

思路:tarjan求强连通分量,强联通分量可以相互传递消息,然后,按强联通编号重构图,

统计每个强联通分量的入度出度情况。第一个答案,就显然是入度为0的点,第二个就是max(p,q),构成一个强联通图

这里给情况来解释下max    (1)1->2   3->2     (2) 1->2   1->3

p = 入度为0的强联通分量数

q = 出为为0的强联通分量数

 #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; const int N = ;
int head[N],dfn[N],low[N],scc_no[N],s[N],ins[N],ru[N],chu[N];
int n,scc,tim,tot,top;
struct node{
int to;
int nxt;
}e[N*N]; inline void add(int u,int v){
e[tot].to = v;
e[tot].nxt = head[u];
head[u] = tot++;
} void tarjan(int now,int pre){
dfn[now] = low[now] = ++tim;
ins[now] = ;
s[top++] = now; int to;
for(int o = head[now]; ~o; o = e[o].nxt){
to = e[o].to;
if(!dfn[to]){
tarjan(to,now);
low[now] = min(low[now],low[to]);
}
else if(ins[to] && low[now] > dfn[to]) low[now] = dfn[to];
} if(dfn[now] == low[now]){
int x;
++scc;
do{
x= s[--top];
ins[x] = ;
scc_no[x] = scc;
}while(now != x);
}
} //重构图,统计入度出度情况
void rebuild(){
int to;
for(int now = ; now <= n; ++now){
for(int o = head[now]; ~o; o = e[o].nxt){
to = e[o].to;
if(scc_no[to] != scc_no[now]){
++ru[scc_no[to]];
++chu[scc_no[now]];
}
}
}
} int main(){ scanf("%d",&n);
for(int i = ; i <= n; ++i) head[i] = -;
int v;
for(int u = ; u <= n; ++u){
while(~scanf("%d",&v) && v){
add(u,v);
}
}
for(int i = ; i <= n; ++i){
if(!dfn[i])
tarjan(i,i);
}
rebuild();
int p = ,q = ;
for(int i = ; i <= scc; ++i){
if(!ru[i]) ++p;
if(!chu[i]) ++q;
}
if(scc == ) printf("1\n0\n");
else printf("%d\n%d\n",p,max(p,q)); return ;
}

kuangbin专题 专题九 连通图 POJ 1236 Network of Schools的更多相关文章

  1. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  2. POJ 1236 Network of Schools(强连通分量)

    POJ 1236 Network of Schools 题目链接 题意:题意本质上就是,给定一个有向图,问两个问题 1.从哪几个顶点出发,能走全全部点 2.最少连几条边,使得图强连通 思路: #inc ...

  3. Poj 1236 Network of Schools (Tarjan)

    题目链接: Poj 1236 Network of Schools 题目描述: 有n个学校,学校之间有一些单向的用来发射无线电的线路,当一个学校得到网络可以通过线路向其他学校传输网络,1:至少分配几个 ...

  4. poj 1236 Network of Schools(连通图入度,出度为0)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  5. poj 1236 Network of Schools(又是强连通分量+缩点)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  6. [tarjan] poj 1236 Network of Schools

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

  7. POJ 1236 Network of Schools(Tarjan缩点)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16806   Accepted: 66 ...

  8. POJ 1236——Network of Schools——————【加边形成强连通图】

    Network of Schools Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u ...

  9. POJ 1236 Network of Schools - 缩点

    POJ 1236 :http://poj.org/problem?id=1236 参考:https://www.cnblogs.com/TnT2333333/p/6875680.html 题意: 有好 ...

随机推荐

  1. 0219 springmvc-拦截器和响应增强

    拦截器 拦截器分同步拦截器和异步拦截器: HandlerInterceptor 方法和执行时机 可以看DispathcerServlet的原来确定它的三个方法的执行时机: AsynHandlerInt ...

  2. VsCode开发Java SpringBoot遇到的问题

    报错截图 报错一:Build failed, Do you want to continue? 编译失败,你想继续吗? 报错二:ConfigError:The Project "Demo&q ...

  3. 单调栈(POJ2559)

    Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...

  4. MySQL的选则字段+联表+判断+排序(order by)

    MySQL的选则字段+联表+判断+排序(order by) 两个表:1.成绩单 2.查询名单 目标: 1.选中全部字段,用于输出. 2.成绩单中有很多人的成绩,第一步是希望通过联表,只查查询名单上的人 ...

  5. Ubuntu OS 打开端口命令

    直接执行命令:ufw allow 80 再去修改对应功能配置文件的端口号

  6. KafkaUtils.createDirectStream报错Cannot resolve symbol createDirectStream

    一开以为是自己导包导错了,但是对比了一下之前的程序发现并没有错, import org.apache.spark.streaming.kafka.{HasOffsetRanges, KafkaUtil ...

  7. Python TCP与UDP的区别

    TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP通信需要经过创建连接.数据传送.终止连接 ...

  8. Selenium3+python自动化009- 多选框

    多选框 # 随机选择多选框# sports=driver.find_elements_by_name("sport")# maxnum=len(sports)# num=rando ...

  9. Eclipse项目工程导入到IDEA继续开发-超详细

    现在Java开发的主流工具是IDEA,不是说Eclipse,各有各的特色.不过我现在深深的爱上了idea这个工具. 但是之前很多项目都是用eclipse开发的,现在就转入到idea中进行继续开发. 1 ...

  10. ubuntu Redis安装及配置

    1.安装 1.1 下载压缩包:wget http://download.redis.io/releases/redis-5.0.4.tar.gz1.2 解压:tar xzf redis-5.0.4.t ...