题目大意:给定一个无向图,求最小生成树的方案数
首先对于一个无向图的最小生成树,每种边权的边的数量是一定的
首先我们先跑一遍Kruskal,求出最小生成树上每种边权的出现次数
然后对于每种出现在最小生成树上的边权,我们从小到大处理
对于每种边权,我们枚举这种边权的边有多少种方案可以加进最小生成树上而不形成环 这个用状压处理
ans乘上这个值 然后把这种边权连接的所有联通块缩点
注意最小...
分类:
Web程序 时间:
2014-10-18 17:02:36
阅读次数:
255
题目大意:给定一个无向图,求联通块个数,以及k次每次摧毁一个点后的;联通块个数
将边和摧毁的点全记录下来,反着做即可。
注意被摧毁的点不能算作联通块
#include
#include
#include
#include
#define M 400400
using namespace std;
struct abcd{
int to,next;
}table[M];
int head[M...
分类:
Web程序 时间:
2014-10-14 11:21:28
阅读次数:
236
题目大意:给出一棵树,将树中的一个节点去掉之后,这棵树会分裂成一些联通块,求去掉哪些点之后,所有联通块的大小不超过所有节点的一半,并按顺序输出。
思路:基础的子树统计问题,只要深搜一遍就可以出解。这个步骤和求树的重心很像,是树分治的基础。
CODE:
#include
#include
#include
#include
#define MAX 10010
u...
分类:
其他好文 时间:
2014-10-12 12:07:57
阅读次数:
168
题目链接:hdu 1540 Tunnel Warfare
题目大意:有连续的N个城镇,三种操作:
D x:第x城镇被破坏Q x:插叙第x城镇所在联通块有多少个城镇没有被破坏R:修复最后一个被破坏的城镇
解题思路:线段树区间合并,每个城镇看成一个叶子节点,用一个vector记录破坏顺序。对于查询来说,每次只要判断是否在mid?R[lson(u)],mid+L[rson(u)]之间即...
分类:
其他好文 时间:
2014-10-03 13:05:44
阅读次数:
256
用并查集维护联通性。对每个联通块维护一个平衡树。合并时启发式合并。比较懒,用了pb_ds。 1 #include 2 #include 3 #include 4 using namespace std; 5 using namespace __gnu_cxx; 6 using namespace _...
分类:
其他好文 时间:
2014-09-13 10:32:35
阅读次数:
180
题目链接虽然题目不难,但是1A还是很爽, 只是刚开始理解错题意了,想了好久。 还有据说这个题用vector会超时,看了以后还是用邻接吧。题意:给一颗树,保证是一颗树,求去掉一个点以后的联通块里节点的数目的 最大值最小,求这样的点,并按照递增顺序输出。分析:d[father] = max(n-sum,...
分类:
其他好文 时间:
2014-09-10 12:18:50
阅读次数:
199
唉= =这道题我都想到了tarjan缩点,但是没有想到最后一步啊= =我们很容易想到反向建边然后缩点,这时候我们看由多少个联通块的入度为0,如果为1个,那就输出这个块的大小,否则输出0;#include #include #include #include using namespace std;c...
分类:
其他好文 时间:
2014-09-01 21:08:43
阅读次数:
278
http://www.lydsy.com/JudgeOnline/problem.php?id=1015看了题解的囧T_T,一开始以为是求割点,但是想到割点不能统计。。。。这题用并查集,思想很巧妙。我们按照逆序建图,也就是从最后一个毁了的星球之后建图。然后从后往前走。那么怎么统计联通块呢?很简单,我...
分类:
Web程序 时间:
2014-08-26 11:29:06
阅读次数:
178
题目链接:点击打开链接
题意见白书P248
思路:
先把读入的y值都扩大2倍变成整数
然后离散化一下
用线段树来维护y轴 区间上每个点的 城市数量和联通块数量,
然后用并查集维护每个联通块及联通块的最大最小y值,还要加并查集的秩来记录每个联通块的点数
然后就是模拟搞。。
T^T绝杀失败题。。似乎数组开小了一点就过了,==
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-17 01:09:01
阅读次数:
247
今天刚刚学会了用tarjan写缩点(以前用两遍dfs写的),此题调了我很久,需要考虑的情况有些多,但是做出来还是挺开心的。首先通过tarjan缩点,之后要干的事情就是计算答案。答案有两种情况,一是在一个联通块中买进卖出,二是在一个联通块中买入,但在另外一个联通块中卖出。但是需要注意的是,以上两种情况...
分类:
其他好文 时间:
2014-08-12 16:31:44
阅读次数:
256