博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSOI 2008 最小生成树计数 题解
阅读量:2305 次
发布时间:2019-05-09

本文共 726 字,大约阅读时间需要 2 分钟。

题目大意: 求一张图有多少棵最小生成树。

题解

最小生成树有个性质,就是每种长度的边的数量是固定的。

所以先随便找一棵最小生成树,考虑长度为 i i i 的边,先将长度不为 i i i 的最小生成树中的边加入进去,然后就形成了若干个连通块,然后剩下的问题就是用长度为 i i i 的边将这些连通块连成一棵树有多少种方案,显然用矩阵树定理就能求。

最后将每种长度的方案数乘起来就是答案了。

代码如下:

#include 
#include
#include
using namespace std;#define maxn 110#define mod 31011int n,m,ans=1;struct edge{
int x,y,z;}e[1010];int belong[maxn];bool v[1010];struct BCJ{
int fa[maxn]; void init(){
for(int i=1;i<=n;i++)fa[i]=i;} int findfa(int x){
return x==fa[x]?x:fa[x]=findfa(fa[x]);} bool linked(int x,int y){
return findfa(x)==findfa(y);} bool link(int x,int y) {
x=findfa(x),y=findfa(y); if(x==y)return false; fa[y]=x;return true; }}F;bool cmp(edge x,edge y){
return x.z

转载地址:http://qpnib.baihongyu.com/

你可能感兴趣的文章
352. Data Stream as Disjoint Intervals
查看>>
239. Sliding Window Maximum
查看>>
super & this
查看>>
容器关系:Collection
查看>>
java进阶3——接口和多态
查看>>
java进阶4——内部类
查看>>
java进阶5——日期类、包装类和正则表达式
查看>>
java进阶6——集合
查看>>
java进阶7——异常
查看>>
java进阶8——IO流
查看>>
java进阶9——线程
查看>>
java进阶10——面向网络编程
查看>>
java进阶11——反射&BeanUtils
查看>>
PUSQL学习1——PUSQL 基础
查看>>
JavaWeb文件上传
查看>>
解决tomcat内存不足问题:java.lang.OutOfMemoryError: PermGen space
查看>>
JDBC连接常用数据库的URL
查看>>
iReport 按某个字段(属性)值分页打印
查看>>
矢量图控件VectorDraw使用教程:添加vdFramedControl (Visual C# 2005)
查看>>
矢量图控件VectorDraw使用教程:ActionUtility对象
查看>>