题目:CodeForces - 1139C

题意:一个n个节点的无向图,有n-1条边每条边是黑色或者红色,现在统计包含k个点(不需要连续)的路中至少有1条黑边的路径数目

分析:总共有n^k条路径,将所有通过红边连在一起的联通块的数目,同时记录每个联通块中点的数目p[i];

由于这个可以自反(就是4可以走(4->4))所以每个联通块中的没有黑色边的路径数目为p[i] ^ k;

所以总共的数目就是 % mod;

但是需要注意的是如果减出来的差小于0,应该加上mod;没考虑到这个就一直wa

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>using namespace std;typedef long long LL;
const int maxn = 1e5 + 5;
const int mod = 1e9 + 7;
bool vis[maxn];struct Edge
{int to;int color;Edge(int _to,int _color):to(_to),color(_color){}
};LL p[maxn];//record the number of the connected block
vector<Edge>edge[maxn];
void dfs(int x,int cnt)
{vis[x] = 1;int sz = edge[x].size();for(int i = 0; i < sz;i ++){Edge v = edge[x][i];if(v.color == 0 && !vis[v.to]){p[cnt] += 1;dfs(v.to,cnt);}}
}
LL pow_mod(LL a, LL n, LL p){LL ret = 1;LL tmp = a;while(n) {if(n & 1) ret = (ret * tmp) % p;tmp = tmp * tmp % p;n >>= 1;}return ret;
}int main()
{LL n,k;while(cin >> n >> k){int u,v,x;for(int i = 1;i < n;i ++){cin >> u >> v >> x;edge[u].push_back(Edge(v,x));edge[v].push_back(Edge(u,x));}memset(vis,false,sizeof(vis));int cnt = 1;for(int i = 1;i <= n;i ++){p[i] = 1;}for(int i = 1;i <= n;i ++){if(!vis[i]){dfs(i,cnt++);}}LL sum = pow_mod(n,k,mod);LL ans = 0;for(int i = 1;i < cnt;i ++){ans = (ans + pow_mod(p[i],k,mod)) % mod;}ans = sum - ans;if(ans < 0) ans += mod;cout << ans << endl;}return 0;
}

CodeForces - 1139C Edgy Trees (快速幂+dfs)相关推荐

  1. codeforces 1139c Edgy Trees 【并查集 】

    题意: 一颗有n个节点的树 树的边为红色或者黑色 给你节点数 n  和 k 让你求出长度为k的 1 - n 的全排列 作为路径在该树上  经过黑色的边 的数量  答案 mod 1e9+7 题解: 将思 ...

  2. 第九届河南省赛 宣传墙 //状压dp+矩阵快速幂+dfs

    http://nyoj.top/problem/1273 状压dp+矩阵快速幂+dfs 1273-宣传墙 内存限制:64MB 时间限制:1000ms 特判: No 通过数:19 提交数:64 难度:4 ...

  3. CF 1139C Edgy Trees

    这个题目太长了,我就放个连接算了: http://codeforces.com/problemset/problem/1139/C 题目分析 这个题把题意读懂了就好弄了,本以为是最短路的,但应该是求连 ...

  4. 1916. 统计为蚁群构筑房间的不同顺序 费马小定理+快速幂+DFS

    1916. 统计为蚁群构筑房间的不同顺序 你是一只蚂蚁,负责为蚁群构筑 n 间编号从 0 到 n-1 的新房间.给你一个 下标从 0 开始 且长度为 n 的整数数组 prevRoom 作为扩建计划.其 ...

  5. Codeforces 696C. PLEASE(快速幂+费马小定理)

    题目链接 题目大意 三个杯子,硬币一开始在中间的杯子里,每次操作可能是左边和中间或右边和中间交换,问n次操作后,硬币在中间的概率 思路 设 f(n) f(n) 是n次操作后硬币在中间的概率,则很明显, ...

  6. 【Codeforces Gym - 101635C Macarons 】【矩阵快速幂+状压】【dfs时间换空间】

    [链接] http://codeforces.com/gym/101635/attachments [题意] 求用1*1,1*2的方格填n*m的矩阵的方法数 [知识点] 状压dfs+矩阵快速幂 [分析 ...

  7. Edgy Trees CodeForces - 1139C

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

  8. 15行代码AC——Link/Cut Tree CodeForces - 614A(爆long long处理+快速幂讲解)

    励志用少的代码做高效表达 Problem describe Programmer Rostislav got seriously interested in the Link/Cut Tree dat ...

  9. # 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 ...

最新文章

  1. C++11中std::initializer_list的使用
  2. 抱歉,我觉得有些人做副业并不靠谱
  3. 【ASP.NET北大青鸟】-总结(二)
  4. 谈谈我对服务熔断、服务降级的理解
  5. Service Mesh 为什么从“趋势”走向“无聊”?
  6. 阿里开源分布式事务seata带你入门
  7. 重写Android系统自带Dialog
  8. 大屏监控系统实战(15)-打包上线及总结
  9. 基础知识—数据类型-变量
  10. 英语一窍不通能学计算机吗,对英语一窍不通怎么学有什么好的方法
  11. 企业微信api,企业微信sdk接口
  12. ECCV 2020|3D-CVF多模态融合(LIDAR+CAMERA)
  13. 好玩的海外游戏集结,有没有你玩过的?
  14. 云旗OS助手火了!可一站式体验统信UOS
  15. 【移动网络】[5G 核心网络架构] 5GC: Architecture
  16. python过滤敏感词汇_利用Python正则表达式过滤敏感词的方法
  17. [模拟电路]ADI放大器笔记 - 差分放大器单端输入电阻设计
  18. DCDC直流非隔离负高电压输出电源模块12V24V转0-负50v/-150v/-200v/-250v/-300v/-400v/-500v
  19. 技术分享 | ClickHouse StarRocks 使用经验分享
  20. 大数据工程师工作笔记之集群节点准备

热门文章

  1. Android Proguard 不混淆所有第三方jar(忽略配置设置)
  2. python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析
  3. 阿里云改名并下载文件,乱码问题解决
  4. Go语言经典库使用分析(六)| Negroni 中间件(二)
  5. 软件设计师(八)汇总-选择题
  6. 浮点数强制转换整数,四舍五入
  7. 基于python数据分析(分析篇七:预测/误差)
  8. 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_Win10竟然内置了一台虚拟机?教你如何玩转它...
  9. 简单版的相似图片搜索原理
  10. Spring知识点讲解 【笔记】