设\(f[i][j]\)为\(i\)子树,当\(i\)为\(j\)时的方案数

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005;
const int mod = 1e+9+7;
vector <int> g[N];
int vis[N],n,m,t1,t2,f[N][4],c[N]; void dfs(int p) {
vis[p]=1;
int flag = 0;
f[p][1]=f[p][2]=f[p][3]=1;
for(int i=0;i<g[p].size();i++) {
int q=g[p][i];
if(vis[q]) continue;
flag = 1;
dfs(q);
for(int j=1;j<=3;j++) {
int tmp=0;
for(int k=1;k<=3;k++) {
if(j!=k) tmp+=f[q][k];
}
f[p][j]*=tmp, f[p][j]%=mod;
}
}
if(c[p]) {
for(int i=1;i<=3;i++) {
if(i==c[p]) continue;
f[p][i]=0;
}
}
} signed main() {
scanf("%lld%lld",&n,&m);
for(int i=1;i<n;i++) {
scanf("%lld%lld",&t1,&t2);
g[t1].push_back(t2);
g[t2].push_back(t1);
}
for(int i=1;i<=m;i++) {
scanf("%lld%lld",&t1,&t2);
c[t1]=t2;
}
dfs(1);
cout<<(f[1][1]+f[1][2]+f[1][3])%mod<<endl;
}

最新文章

  1. 轻量级ORM框架——第一篇:Dapper快速学习
  2. 简单而兼容性好的Web自适应高度布局,纯CSS
  3. win7 64位 VS2010调试提示&ldquo;ORA-12154: TNS: 无法解析指定的连接标识符&rdquo;的解决方法
  4. centos 7 相关的一些记录
  5. Android--ColorMatrix改变图片颜色
  6. SQLite3中自增主键
  7. CSS3的position:sticky介绍
  8. spring(7)--注解式控制器的数据验证、类型转换及格式化
  9. mvc日期控件datepick的几篇文章,日后再总结吧
  10. 【Python之路】第四篇--Python基础之函数
  11. Spring Security入门(3-6)Spring Security 的鉴权 - 自定义权限前缀
  12. 并发编程 futuretask
  13. es教程
  14. AngularJS中转换响应内容
  15. YQCB冲刺第二周第三天
  16. PMP备考经验分享
  17. Gradle Goodness: Working with Live Task Collection
  18. ORB-SLAM(十二)优化
  19. delphi 窗体的创建和释放
  20. Spring Cloud Feign 总结

热门文章

  1. 关于mac下redis的安装和部署
  2. Java数据结构--双向链表的实现
  3. SQL内容补充
  4. JAVA JDBC 连接数据库
  5. setter&amp;getter
  6. vue(七)--监听属性(watch)
  7. Selenium实战(一)——浏览器实例
  8. 输入python -m pip install --upgrade pip更新pip版本失败的解决办法
  9. 洛谷题解 P1592 【互质】
  10. SQLserver 行变列。