【题解】

对于不同的最小生成树,每种权值的边使用的数量是一定的,每种权值的边的作用是确定的

我们可以先做一遍Kruskal,求出每种权值的边的使用数量num

再对于每种权值的边,2^num搜索出合法使用方案,把每种权值的边的方案用乘法原理乘起来就是答案了

 #include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=,Mod=;
int n,m,tot,sum,ans=,cnt,st[maxn],fa[maxn],num[maxn];
struct edge{int x,y,dis,pos;}e[maxn];
void read(int &k){
k=; int f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
k*=f;
}
int find(int x){return fa[x]==x?x:find(fa[x]);}
void dfs(int kind,int now,int chosen){
if (now==st[kind+]){
if (chosen==num[kind]) sum++;
return;
}
int p=find(e[now].x),q=find(e[now].y);
if (p!=q) fa[p]=q,dfs(kind,now+,chosen+),fa[p]=p,fa[q]=q;
dfs(kind,now+,chosen);
}
bool cmp(edge a,edge b){return a.dis<b.dis;}
int main(){
read(n); read(m);
for (int i=;i<=m;i++)read(e[i].x),read(e[i].y),read(e[i].dis);
sort(e+,e+m+,cmp);
for (int i=;i<=m;i++) {
if (e[i].dis!=e[i-].dis) st[++cnt]=i;
e[i].pos=cnt;
}
st[cnt+]=m+;
for (int i=;i<=n;i++) fa[i]=i;
for (int i=,x,y;i<=m;i++)
if ((x=find(e[i].x))!=(y=find(e[i].y))) fa[x]=y,num[e[i].pos]++,tot++;
if (tot!=n-) return puts(""),;
for (int i=;i<=n;i++) fa[i]=i;
for (int i=;i<=cnt;i++) if(num[i]){
sum=; dfs(i,st[i],);
for (int j=st[i];j<st[i+];j++) fa[find(e[j].x)]=find(e[j].y);
ans=1LL*ans*sum%Mod;
}
printf("%d",ans);
return ;
}

最新文章

  1. 【2016-11-7】【坚持学习】【Day22】【Oracle 递归查询】
  2. 媒体查询判断ipad和iPhone各版本
  3. MOGRE学习笔记(1) - OGRE简介及在vs2010下配置
  4. SELinux配置不当导致vsftpd系统用户不能登陆
  5. TS数据结构分析
  6. (转载)Mysql中,SQL语句长度限制
  7. eclipse 编辑 python 中文乱码的解决方案
  8. DIR和dirent结构体
  9. 3.java.lang.ClassNotFoundException
  10. asp.net权限认证:Windows认证
  11. Linux上SQL及MYSQL简单操作
  12. R的变量类型和常用函数
  13. html css 前端基础 学习方法及经验分享
  14. Codeforces Round #430 C. Ilya And The Tree
  15. 认证模式之Basic模式
  16. sql Server 2008 数据库自动备份维护计划
  17. thrift使用
  18. file_list(path):遍历文件列表[python]
  19. CSS三列布局之左右宽度固定,中间元素自适应问题
  20. python day09作业答案

热门文章

  1. sed 之 -n p
  2. remove namespace from xml config file
  3. bzoj2982 combination——卢卡斯定理
  4. Linux进程状态解析
  5. Counterfeit Dollar
  6. 织梦dedecms标签大全总结
  7. bzoj题目分类
  8. codevs1040统计单词个数(区间+划分型dp)
  9. [App Store Connect帮助]一、 App Store Connect 使用入门(4)iOS 版 App Store Connect
  10. DFS知识点