tarjan算法+缩点--cojs 908. 校园网】的更多相关文章

cojs 908. 校园网 ★★   输入文件:schlnet.in   输出文件:schlnet.out   简单对比时间限制:1 s   内存限制:128 MB USACO/schlnet(译 by Felicia Crazy) 描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意如果 B 在 A 学校的分发列表中,那么 A 不必也在 B 学校的列表中. 你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受…
tarjan求割点:cojs 8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏,需给通讯点配备备用交换机.但备用交换机数量有限,不能全部配备,只能给部分重要城市配置.于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配备备用交换机.请你根据城市线路情况,计算需配备备用交换…
强连通分量:1309. [HAOI2006]受欢迎的牛 ★★   输入文件:cow.in   输出文件:cow.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛 A 认为牛 B受欢迎.这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎.你的任务是求出有多少头牛被所有的牛认为是受欢迎的. [输入格式] 第1行两个整数N,M: 接下来M行,每行两个数A…
思路:使用tarjan求强连通分量并进行缩点,判断所有入度为0的点,这个点就是必须要给予文件的点,分别计算出度,入度为零的点的个数,取二者的最大值就是把这个图变成强连通需要加的边数. 一个取值需要讨论,当这个图就是强连通图的时候,答案输出1和0. 个人经历:作为初学者这个题错了很多遍,学姐给我们讲的在某个点已经被访问过的时候low值是否更新的问题,使用的是id的判断方法,只有当id为零的时候才能更新low值,这个现在我是理解的,但当时因为错误太多看别人的代码时,看到了是否在栈中的记录方式,当时我…
题意: 给你n个点,和m条单向边,问你有多少点满足(G)={v∈V|∀w∈V:(v→w)⇒(w→v)}关系,并把这些点输出(要注意的是这个关系中是蕴含关系而不是且(&&)关系) 题解: 单独一个强连通分量中的所有点是满足题目要求的但如果它连出去到了其他点那里,要么成为新的强连通分量,要么失去原有的符合题目要求的性质所以只需tarjan缩点求出所有强连通分量,再O(E)枚举所有边,是否会成为连接一个分量与另一个分量的边--即一条出度--即可如果一个分量没有出度,那么他中间的所有点都是符合题目…
tarjan算法求图中的强连通子图的个数. #include<iostream> #include<stack> #include<queue> #include<string> #include<cstring> #include<algorithm> #include<cmath> # define maxn using namespace std; vector<int>wakaka[maxn]; sta…
poj2186tarjan算法缩点求出度 自己打一遍第一题,入门啦,入门啦 题目还算简单,多头牛,给你仰慕关系(可传递),问你最后有没有牛被所有的牛仰慕 根据关系可以建图,利用tarjan算法缩点处理后,得到有向无环图,缩成的点都是相互仰慕的,所以根据传递性也就是可以看成一个点了,然后染色分块,计算每一块的出度. 如果出度为0有且仅有一个,那么输出该块内所有的点,都符合要求 如果有多个直接输出0即可 #include <iostream> #include <cstdio> #in…
(声明:以下图片来源于网络) Tarjan算法求出割点个数 首先来了解什么是连通图 在图论中,连通图基于连通的概念.在一个无向图 G 中,若从顶点i到顶点j有路径相连(当然从j到i也一定有路径),则称i和j是连通的.如果 G 是有向图,那么连接i和j的路径中所有的边都必须同向.如果图中任意两点都是连通的,那么图被称作连通图.如果此图是有向图,则称为强连通图(注意:需要双向都有路径).图的连通性是图的基本性质. --摘自度娘 通俗易懂,不在解释. 举个例子吧: 如上图,各个节点皆可以到达任意节点,…
前置知识 图的遍历(dfs) 强连通&强连通分量 对于有向图G中的任意两个顶点u和v存在u->v的一条路径,同时也存在v->u的路径,我们则称这两个顶点强连通.以此类推,强连通分量就是某一个分量内各个顶点之间互相连通. 简单来说,就是有向图内的一个分量,其中的任意两个点之家可以互相到达. 求有向图内部强连通分量的方法大概有2种:tarjan算法,korasaju算法.这里我们只对tarjan算法进行讨论. tarjan算法 tarjan算法是tarjan神仙提出的基于dfs时间戳和堆栈…
Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)(转载) 转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2194090a96bbed2db1351de8.html 基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合. 3.点连…