poj1236 Network of Schools(SCC缩点+结论推导)
第一问简单不讲。
第二问简化后问题是给一张DAG求最少添加几条边使得DAG变成一个SCC。首先所有中间点(有入度有出度)肯定直接顺着走到无出度点,所以肯定是无出度点连向无入度点。
把无入度点作为点集S,把无出度点作为点集T。
二分图连边表示S点(入度为零)可以走到T点(出度为零),然后先暴力匹配,表示每一个$S_i$尽可能走一个互不相同的$T_i$点,然后所有匹配边从$T_i$向下一个匹配的$S_{i+1}$连一条边,表示从$S_i\to T_i\to S_{i+1}$,如此往复,最终将最后一个$T_k$连向开始时的$S_1$,此时形成一个环,是SCC。然后剩下的没被选上的是不连通的。如果是$S_i$点表明他所有可以走到的$T$都被其他$S$走过去了,$T$也是一样,能走到他的$S$都走到其他点$T$了,就把每一对未匹配的$T$向$S$连一下边,最后如果还剩下来就随便连了。这样,会发现左右两侧的点就都被连上了一条边。所以最少连边数量是$\max(|S|,|T|)$。如果要求方案的话就用这个二分图的匹配就行了,如果数据大了呢?再见
注意:上述证明结论的方法我翻阅了绝大部分网络题解,发现讲的都比较随便,都是“无出度点和无入度点随便两两匹配,直到每个点都有出度入度就是SCC了”。
错误在于:1.并不是随便选无出度点和无入度点的。hack!
n= m=
2.并不是每个点都有入度和出度就是SCC了,可能是两个环通过一个有向边相连什么的。
所以我认为大部分题解的证明和构造答案方法都是错的。
当然我并没有就认为我的一定是对的。如果有谁可以推翻我的改正说法,欢迎爆踩指正。
代码什么的。。网上满天飞了。
poj1236 Network of Schools(SCC缩点+结论推导)的更多相关文章
- P2746 P2812 [USACO5.3]校园网Network of Schools[SCC缩点]
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学 ...
- [poj1236]Network of Schools(targin缩点SCC)
题意:有N个学校,从每个学校都能从一个单向网络到另外一个学校.1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件.2:至少需要添加几条边,使任意向一个学校发放软件后,经过若干次 ...
- P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools
P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学 ...
- POJ1236 Network of Schools —— 强连通分量 + 缩点 + 入出度
题目链接:http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K Tot ...
- POJ1236 Network of Schools (强连通)(缩点)
Network of Schools Time Limit: 1000MS ...
- poj-1236.network of schools(强连通分量 + 图的入度出度)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27121 Accepted: 10 ...
- POJ1236 - Network of Schools tarjan
Network of Schools Time Limit: 1000MS Memory Limi ...
- POJ 1236 Network of Schools Tarjan缩点
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22729 Accepted: 89 ...
- POJ-1236 Network of Schools,人生第一道Tarjan....
Network of Schools 题意:若干个学校组成一个计算机网络系统,一个学校作为出发端连接着若干个学校,信息可以传送到这些学校.被链接的学校不需要再次与出发端相连,现在问你:A:最少选几个学 ...
随机推荐
- spring 机制 扫描包
控制器示例 扫描包注解代码 @SpringBootApplication(scanBasePackages = {"cn.maxhou.*"}) 引号内为包名,支持*通配符 为什么 ...
- Encoding.GetEncoding 编码列表
代码页 名称 显示名称 37 IBM037 IBM EBCDIC(美国 - 加拿大) 437 IBM437 OEM 美国 500 IBM500 IBM EBCDIC(国际) 708 A ...
- [CF1146D]Frog Jumping_exgcd_堆优化dij
Frog Jumping 题目链接:http://codeforces.com/contest/1146/problem/D 数据范围:略. 题解: 首先发现,如果$x\ge a +b$,那么所有的$ ...
- [LuoguP1074]靶形数独_搜索
靶形数独 题目链接:https://www.luogu.org/problem/P1074 数据范围:略. 题解: 传说中的大爆搜题啊. 我觉得这种题就是你能想到什么优化就直接上什么优化.... 这个 ...
- 究竟什么是Java异常?
第四阶段 IO 异常处理 没有完美的程序,所以我们需要不断地完善,考虑各种可能性,我们要将除了自己以外的任何用户或者操作者都当成傻子来考虑问题 在我们开发过程中 我们运行时常常会遇到 这样java.l ...
- SQL SERVER 字符串函数 PATINDEX()
定义: PATINDEX()返回模式在指定表达式中第一次出现的起始位置:如果在所有有效的文本和字符数据类型中都找不到该模式,则返回零. 语法: PATINDEX ( '%pattern%' , exp ...
- DAG添边定理
让DAG变成强连通就是把尾和头连起来,也就是入度和出度为0的点,添的边数:max(num_in==0,num_out==0)
- python3启航
Python3的基本数据类型 数字 int ,所有功能都放在int里 a1 = 123 a2 = 456 ##int 将字符串转换为数字 a = "123" print(tyep( ...
- 第六章 ZYNQ-MIZ701 GPIO使用之MIO
6.0 本章难度系数★★☆☆☆☆☆ 6.1 GPIO简介 Zynq7000系列芯片有54个MIO(multiuse I/O),它们分配在 GPIO 的Bank0 和Bank1隶属于PS部分,这些I ...
- net core体系-Xamarin-2概要(lignshi)
通过本套课程的学习,各位学员能够对Xamarin有一个比较清楚的认识,掌握Xamarin常用功能的使用方法,能够比较熟练的使用Xamarin进行App(移动应用)的开发,能够比较轻松.快速地投入项目当 ...