Independent Set
Independent Set
给一棵树,每一个点可以染成黑色或白色,任意两个相邻节点不能都是黑色,求方案数,结果对
样例输入
3
1 2
2 3
样例输出
5
树形DP:
我们设状态
当
为黑色时:
状态初始化:
显然,当
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 7;
const int MOD = 1e9 + 7;
vector<int> tree[MAXN];
long long dp[MAXN][2];
int n;
int x,y;
void dfs(int pos,int fa){
int cnt = 0;
for(int to : tree[pos]){
if(to != fa){
cnt++;
dfs(to,pos);
dp[pos][1] = (dp[pos][1] * dp[to][0]) % MOD;
dp[pos][0] = (dp[pos][0] * (dp[to][1] + dp[to][0]) % MOD) % MOD;
}
}
if(cnt == 0){
dp[pos][0] = dp[pos][1] = 1;
}
}
int main(){
scanf("%d", &n);
for(int i = 1;i <= n;i++){
dp[i][0] = dp[i][1] = 1;
}
for(int i = 1;i <= n - 1;i++){
scanf("%d%d", &x, &y);
tree[x].push_back(y);
tree[y].push_back(x);
}
dfs(1,0);
cout<<(dp[1][0] + dp[1][1]) % MOD;
return 0;
}
本文来自博客园,作者:wyl123ly,转载请注明原文链接:https://www.cnblogs.com/wyl123ly/p/18406979
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】