时隔好久,重新把那些题找出来,写一写了,毕竟实力还很有限,得学。 一开始,最大的疑惑还是怕一个环里有另外一个环(毕竟经验不丰富),后来看到了这段话 T2信息传递 大意:在一个只有n条有向边的图中,每个结点出度为1,求一个包含节点数最少的环。 分析:因为只有n条边并且每个点都有且仅有一条边连出去,.....
分类:
其他好文 时间:
2015-12-04 22:44:16
阅读次数:
1580
brute force!!!很容易想到的是每一个颜色建一个图,然后并查集维护一下连通性。问题在于颜色有O(m)种,每种颜色的图点数都是O(n)的,因此并查集的空间只能重复利用。但是可以把以O(m)的空间把有用的连通块信息保留下来。之后的处理可以借鉴分块的思想。记点v属于的连通块数量为b(v),对于询...
分类:
其他好文 时间:
2015-12-04 18:09:32
阅读次数:
123
传送门给n个点, 初始有m条边, q个操作。每个操作有两种, 1是询问点x所在的连通块内的最长路径, 就是树的直径。 2是将x, y所在的两个连通块连接起来,并且要合并之后的树的直径最小,如果属于同一个连通块就忽视这个操作。先dfs出每个连通块的初始直径, 然后合并的话就是len[x] = max(...
分类:
其他好文 时间:
2015-12-02 20:27:06
阅读次数:
218
原文地址:图的割点、桥与双连通分支[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成...
分类:
其他好文 时间:
2015-11-28 18:10:43
阅读次数:
129
题目大意:给定一棵n个顶点,n-1条边的树。有k个孩子,前k-1个孩子切走树中顶点数不大于n/2的最大连通块,剩余的结点组成新的树。最后一个孩子得到剩余的树中的所有结点。按顺序输出每个孩子能获得的顶点数。解题思路:任选一结点作为根节点,使用深度优先搜索,获得相对于父节点一端,子节点一端的节点总数和节...
分类:
其他好文 时间:
2015-11-07 13:22:04
阅读次数:
182
设f[i][j]为第i张图中j点所在连通块的编号,加边时可以通过启发式合并在$O(dn\log n)$的时间内维护出来。对于每个点,设h[i]为f[j][i]的hash值,若两个点hash值相等,则它们在d张图中均连通。#includetypedef unsigned long long ll;co...
分类:
其他好文 时间:
2015-10-11 19:31:48
阅读次数:
264
当两个城市之间有安全的道路的时候,他们是互相可到达的,这种关系满足自反、对称和传递性,因此是一个等价关系,在图论中就对应一个连通块。在一个连通块中,当前点是那个并不影响往其他连通块的点连边,因此只要记录当前连通块内有哪些点。nusing namespace std;const int maxn = ...
分类:
其他好文 时间:
2015-10-06 23:39:08
阅读次数:
176
先不断将度数小于D的点都删去,再找到剩下的图里最大的连通块即可。#include#include#define N 200010int n,m,D,x,y,i,g[N],v[N='0')&&(c='0')&&(cans)for(ans=t,x=1;x1)std::sort(fin+1,fin+ans...
分类:
其他好文 时间:
2015-10-04 18:27:56
阅读次数:
150
题目链接:codeforces 455C题目大意:给出一些点,他们之间初始存在一些边,给出两种操作,第一种是查询某个点所在的树的直径,另一种是将两个树合并,要求使合并后的树的直径最小。题目分析:
首先算取没做操作前的连通块里的树的直径,也就是先dfs一遍,找到深度最大的点,然后从这个点再搜,找到的最远的距离就是这棵树的直径,因为可以证明从根搜深度最大的点一定是树的直径的一个端点,因为它可以通过到达次...
分类:
其他好文 时间:
2015-10-03 16:58:57
阅读次数:
174
Wikioi 3410 别墅房间题目描述Description小浣熊松松到他的朋友家别墅去玩,发现他朋友的家非常大,而且布局很奇怪。具体来说,朋友家的别墅可以被看做一个N*M的矩形,有墙壁的地方被标记为’#’,其他地方被标记为’.’。两个格子(a,b)和(c,d)被当做在同一个房间内,当且仅当|a-...
分类:
其他好文 时间:
2015-09-27 09:59:15
阅读次数:
190