题目名称 1854. [JSOI 2008] 最小生成树计数
输入输出 bzoj_1016.in/out
难度等级 ★★★☆
时间限制 1000 ms (1 s)
内存限制 162 MiB
测试数据 10
题目来源 GravatarAsm.Def 于2014-12-07加入
开放分组 全部用户
提交状态
分类标签
矩阵树定理
分享题解
通过:78, 提交:217, 通过率:35.94%
GravatarMarvolo 100 0.000 s 0.00 MiB C++
GravatarBaDBoY 100 0.000 s 0.00 MiB C++
GravatarHellc 100 0.003 s 0.32 MiB C++
Gravatar小强 100 0.003 s 0.33 MiB C++
GravatarOwen 100 0.003 s 0.34 MiB C++
GravatarNawox 100 0.003 s 0.36 MiB C++
Gravatarstone 100 0.003 s 0.41 MiB C++
Gravatarsxysxy 100 0.003 s 0.56 MiB C++
Gravatarswm_sxt 100 0.003 s 2.79 MiB C++
GravatarKirin 100 0.004 s 0.31 MiB C++
关于 最小生成树计数 的近10条评论(全部评论)
这题不需要Matrix-Tree直接暴力+Kruskal就可以了
GravatarImone NOI2018Au
2017-06-29 13:19 9楼
回复 @Asm.Def :
神犇提醒的对,我在这几个地方也都错了- -
GravatarFoolMike
2017-01-22 15:29 8楼
回复 @Asm.Def :
不是的。。其实我是脑袋抽了才用指针的。。
只是给数组换了一个名字而已。。
GravatarHouJikan
2015-01-16 13:40 7楼
回复 @HouJikan :
如果你用一个指针数组存矩阵的话swap的时候只要交换两行的指针就可以了……
GravatarAsm.Def
2015-01-15 12:20 6楼
QAQ代码写的跟屎一般。。
BZOJ上还会超时QAQ
到时候重写
GravatarHouJikan
2015-01-14 21:34 5楼
附上最小生成树的两个性质:
1、边权相等的边的个数一定。
2、做完边权为w的所有边时,图的连通性相同。
Gravatar天一阁
2014-12-25 16:01 4楼
暴搜,童鞋们一定不要在存下下标的时候来遍sort啊,还有如果是跟我一样的离散化,注意离散排序的数组是Maxm,不是Maxn
Gravatar天一阁
2014-12-25 16:01 3楼
几天来写出的代码共找到bug如下:
1.忽略了31011是个合数,利用高斯消元求行列式时求了个逆元;
2.没有判断无解的情况(最终不连通);
3.没有考虑“相同权值的边形成的不是一个联通块”的情况;
4.应用Matrix-Tree定理前对缩点后的图构造Kirchhoff矩阵时重边两侧的“连通度”仍为1。
真是醉醉醉醉醉……
GravatarAsm.Def
2014-12-13 13:54 2楼
我要学静态查错!!!!!
GravatarAsm.Def
2014-12-12 22:12 1楼

1854. [JSOI 2008] 最小生成树计数

★★★☆   输入文件:bzoj_1016.in   输出文件:bzoj_1016.out   简单对比
时间限制:1 s   内存限制:162 MiB

【题目描述】

现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对31011的模就可以了。

【输入格式】

第一行包含两个数,n和m,其中1<=n<=100; 1<=m<=1000; 表示该无向图的节点数和边数。每个节点用1~n的整数编号。接下来的m行,每行包含两个整数:a, b, c,表示节点a, b之间的边的权值为c,其中1<=c<=1,000,000,000。数据保证不会出现自回边和重边。注意:具有相同权值的边不会超过10条。

【输出格式】

输出不同的最小生成树有多少个。你只需要输出数量对31011的模就可以了。

【样例输入】

4 6

1 2 1

1 3 1

1 4 1

2 3 2

2 4 1

3 4 1

【样例输出】

8

【题目来源】

耒阳大世界(衡阳八中) OJ 1016