3696: 化合物|树形DP
2016-02-28 16:49
423 查看
用a[x][i]表示以节点x为根深度为i的结点数
然后暴力转移……
有人说这是母函数QAQ..smg
然后暴力转移……
有人说这是母函数QAQ..smg
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<set> #include<map> #include<vector> #include<queue> #include<iostream> #include<algorithm> #define N 100052 using namespace std; int head ,lst ,nxt ; int mx ,a [505],ans[555]; int n,tot; void insert(int x,int y) { lst[++tot]=y; nxt[tot]=head[x]; head[x]=tot; } void dfs(int x) { a[x][0]=1; for(int i=head[x];i;i=nxt[i]) { dfs(lst[i]); for(int j=0;j<=mx[x];j++) for(int k=0;k<=mx[lst[i]];k++) ans[j^(k+1)]+=a[x][j]*a[lst[i]][k]; mx[x]=max(mx[x],mx[lst[i]]+1); for(int j=0;j<=mx[lst[i]];j++) a[x][j+1]+=a[lst[i]][j]; } } int main() { scanf("%d",&n); for(int i=2;i<=n;i++) { int x;scanf("%d",&x); insert(x,i); } dfs(1); int MX=512; while(!ans[MX-1])MX--; for(int i=0;i<MX;i++)printf("%d\n",ans[i]); return 0; }
相关文章推荐
- 树形DP 或 最小顶点覆盖=最大匹配(双向图)(HDU 1053)
- [BZOJ1017][JSOI2008][树形DP]魔兽地图DotR
- ZOJ3824 Fiber-optic Network
- hihocoder #1035 : 自驾旅行 III 树形DP
- POJ 3342
- URAL1018
- hdu1561 zoj3201
- poj 3107 Godfather
- zoj3201Tree of Tree
- Codeforces Round #135 (Div. 2)VD. Choosing Capital for Treeland
- POJ 1848 Tree
- HDU 1561 The more, The Better(树形DP)
- UVALive 6436 The Busiest City
- 树形dp简单总结
- Party at Hali-Bula
- zoj cut the tree(树形dp,小细节真的很多)
- poj 2486 Apple Tree(树形dp)
- poj 1155 TELE(树形泛化背包dp)
- 树形DP
- HDU 1520 Anniversary party (树形dp) 解题报告