codeforces 1139C

题目链接:http://codeforces.com/contest/1139/problem/C

题意: 给你一个n个结点n-1条边的无向连通图,由红边和黑边组成。然后给一个数字k,问有多少个长度为k的结点序列(结点可重复出现),按照这些结点顺序在图上走,最少经过一次黑边。

题解

直接去算至少经过一次黑边的个数很难算,可以间接去求。

算一下所有长度为k的序列有多少个,即n的k次幂

然后算只经过红边的个数有多少,减一下就可以了。

输入边的时候判断一下是红边还是黑边,是黑边不处理,是红边那么连起来,并且在根节点处记录这个连通块有多少结点。

设某个连通块的结点有x个,则这个连通块有 x的k次幂种方案。

#include<algorithm>
#include <iostream>
#include<cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
const int maxn=2e5+5;
const ll mod=1e9+7;
int father[maxn];
int num[maxn];
int get(int x){return x==father[x]?x:father[x]=get(father[x]);
}
ll ksm(ll a, ll b){a%=mod;ll ans=1;while(b){if(b&1) ans=ans*a%mod;b>>=1;a=a*a%mod;}return ans;
}
int main(){int n,k;cin>>n>>k;for(int i=1;i<=n;i++){father[i]=i;num[i]=1;}for(int i=1;i<n;i++){int a,b,x;scanf("%d%d%d",&a,&b,&x);if(x==0){int c=get(a);int d=get(b);if(c!=d){father[d]=c;num[c]+=num[d];num[d]=0;}}}ll ans=ksm(n,k);for(int i=1;i<=n;i++){if(num[i]){ans=(ans-ksm(num[i],k)+mod)%mod;}}cout<<ans<<endl;return 0;
}

Codeforces Round #548 (Div. 2)C. Edgy Trees 并查集相关推荐

  1. # Codeforces Round #548 (Div. 2)C Edgy Trees

    Codeforces Round #548 (Div. 2)C Edgy Trees 题目传送门 You are given a tree (a connected undirected graph ...

  2. 【Codeforces Round #548(Div. 2)】Edgy Trees(数学+bfs求连通块)

    题目链接 C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. Codeforces Round #548 (Div. 2) C. Edgy Trees(dfs || 并查集)

    题目链接:https://codeforces.com/contest/1139/problem/C 题意:给了一棵树,n个点,m条边.让从中选k个点,使得从a1到a2,a2到a3,ak-1到ak的路 ...

  4. Codeforces Round #548 (Div. 2) C. Edgy Trees(思维+dfs)

    题目链接:https://codeforces.com/contest/1139/problem/C        题意是给了一棵树,n个点,m条边.让从中选k个点,使得从a1到a2,a2到a3,ak ...

  5. Codeforces Round #548 (Div. 2) C. Edgy Trees(并查集+快速幂)

    思路用并查集统计一个连通块的节点个数,最后用总的减去他,设x是连通块的节点个数,o个联通块 #include<bits/stdc++.h> #define fi first #define ...

  6. Codeforces Round #260 (Div. 1) C. Civilization(dfs+并查集)

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. C. Edgy Trees---(思维题+并查集的运用)---Codeforces Round #548 (Div. 2)

    Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes 题目链接http://codeforces.c ...

  8. [题解][Codeforces 1139A~1139F]Codeforces Round #548 (Div. 2) 简要题解

    终于 rank < 10 了 题目 洛谷 RemoteJudge A B C D E F Codeforces A B C D E F A 题意 一个长度为 nnn 的数字串 sss 求 sss ...

  9. C. Edgy Trees Codeforces Round #548 (Div. 2) 【连通块】

    一.题面 here 二.分析 这题刚开始没读懂题意,后来明白了,原来就是一个数连通块里点数的问题.首先在建图的时候,只考虑红色路径上的点.为什么呢,因为为了不走红色的快,那么我们可以反着想只走红色的路 ...

最新文章

  1. php 脚本 fpm缓存,PHP生命周期及fpm(FastCGI进程管理器)的运作方式
  2. Android开发--Json数据的解析
  3. 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问。(异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))...
  4. docker 挂载目录_Docker容器数据管理
  5. 南开大学滨海学院计算机科学系,【公示】南开大学滨海学院2019届“优秀毕业生”、“十佳毕业生” 评选结果公示...
  6. vscode we cannot connect_秋季常规赛分秒必争,PC BET直播:TES能否拿下西安WE
  7. D3D中材质通过D3DMATERIAL9结构说明
  8. java斗地主发牌源码
  9. 过新版狗php一句话,整理的最新WebSHell (php過狗一句話,過狗菜刀,2016過狗一句話,2016php免殺一句話)...
  10. JAVA web App扫码登录
  11. 关于实验室数据结构实验错误本周总结。引用调用bug
  12. 学习c语言-----输出图形
  13. Flutter dart语言特点总结
  14. PPT文件太大,怎样将PPT进行压缩?这一招教你实现
  15. 未备案域名可以用吗?域名备案有什么好处?
  16. webmagic保存html页面,WebMagic抓取前端Ajax渲染的页面
  17. 读书笔记:《大型网站技术架构:核心原理与案例分析》(李智慧)(一)
  18. 华为 荣耀 6x android哪个版本,华为荣耀畅玩6X官方rom刷机包_华为荣耀6X原版系统包_升级包...
  19. 论文阅读笔记《Deep Graph Matching under Quadratic Constraint》
  20. 网页爬虫为什么需要爬虫ip

热门文章

  1. GIS开发:QGIS编辑矢量数据
  2. 易經大意(6) 三和 韓長庚 著
  3. Tomcat 安装与配置
  4. 监控工具zabbix安装及使用详解
  5. 零基础入门学习Python(31)--永久存储:腌制一缸美味的泡菜
  6. linux常用命令:文本编辑
  7. 8.2 “三十岁挨踢”的魔咒——《逆袭大学》连载
  8. 设计模式-抽象工厂总结
  9. 计组笔记:浮点的四则运算 /规格化 / 舍入
  10. 邓凡平WIFI学习笔记4:WiFi Simple configuration