题目: 题意: 给了一个联通无向图,现在问去掉某个点,会让图变成几个联通块? 输出的按分出的从多到小,若相等,输出标号从小到大.输出M个. 分析: BCC求割点后联通块数量,Tarjan算法. 联通块的数目在找到一个low[y]>=dfn[x]时累加,最后加一即可. 代码如下: #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algo…
SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7136   Accepted: 3255 Description Consider the two networks shown below. Assuming that data moves around these networks only between directly connected nodes on a peer-to-peer basis, a…
题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量. 思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可.算法相对简单,但是注意几个细节: 1:原图可能不连通. 2:有的连通分量只有一个点,当舍去该点时候,连通分量-1: 复习求割点的好题! #include<iostream> #include<cstdio> #include<vector> using namespace std; int n,m; vector<vector&…
dp[n][2],维护儿子的联通块数量和父亲的联通块数量. 第一遍dfs求儿子,第二遍dfs求爸爸. #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include <string> #include<queue> #include<vector> #include<set…
题目大意:给一个n个点的无向连通图,找出删除某个点后的连通块个数. 题目分析:统计一下每个节点属于几个双连通分量,若是割点,得到的便是答案,否则答案为1. 代码如下: # include<iostream> # include<cstdio> # include<stack> # include<vector> # include<cstring> # include<algorithm> using namespace std; #…
tarjan算法,枚举割点(注意此题无向图可能不连通),每个割点分割后最大块数+连通分量-1即可.开始老是TLE,后来比较了他人代码,只在vector<vector<int.>.>,用全局变量即可,用局部TLE.记住教训. #include<iostream> //600+MS/5000MS #include<cstdio> #include<vector> //用这个做链表,保存边,方便. #include<cstring> usi…
题目链接:https://vjudge.net/contest/67418#problem/B 题意:给一个无向连通图,求出割点的数量.首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第一个数字代表后面的都和它存在边,0表示行输入的结束. 题解:简单的求割点模版,所谓割点就是去掉这一个点还有于这个点链接的边之后使得原来的图连通块增加. 由于这是模版题代码会加上注释. #include <iostream> #include <cstring> using namesp…
作为一道板子题放在第二题令人身心愉悦,不到一个小时码完连对拍都没打. 关于tarjan割点的注意事项: 1.在该板子中我们求的是V-DCC,而不是缩点,V-DCC最少有两个点组成,表示出掉一个块里的任意 一点及其连边,联通性不变,所以割点只是顺便标记上low[to]>=dfn[x]的点,在以后的操作中 将割点与联通块连边,所以最坏情况下所生点数(即原图为一条链)为2*n-2 边数的话如没有明确给出一般为点数的8倍. ******(这题80分,就是数组开小,没加快读)******* 2.我们在ta…
D. Directed Roads   ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it consists of n towns numbered from 1to n. There are n directed roads in the Udayland. i-th of them goes from town i to some other tow…
https://oj.neu.edu.cn/problem/1387 给一个点数N <= 100000, 边 <= 1000000的无向图,求补图的联通块数,以及每个块包含的点数 由于点数太大,补图会是稠密图,甚至建立补图都要O(n^2),只能挖掘一下联通块,bfs,补图的性质,从原图入手求补图的联通块: 在原图中不直接相邻的点,在补图中一定属于同一个联通块 每个点只属于一个联通块,所以找好一个联通块之后可以删去这个联通块的所有点,把图规模缩小 这样子:1.准备一个集合放所有未探索的点,初始化…