HDU 4275 Color the Tree 树的不重复染色 求树的中心+hash(二)

2014-11-24 10:23:12 · 作者: · 浏览: 1
head[st];i != -1;i=edge[i].next)
{
if(edge[i].v == pre) continue;
if(bj != -1 && (i == bj || i == (bj ^ 1))) continue;
val[c].hash = hash[edge[i].v];
val[c++].ans = ans[edge[i].v];
}
sort(val , val + num);
hash[st] = leaf;
for(int i=0;i {
int j = i;
for(;j {
hash[st] *= yin;
hash[st] ^= val[j].hash;
hash[st] %= mod;
}
hash[st] = hash[st] * yy % mod;
ans[st] *= C(val[i].ans + j - i - 1, j - i);
ans[st] %= mod;
i = j;
}
return;
}

int main()
{
prepare();
while(~scanf("%d %d",&n,&m))
{
init();
read();
make();
dfs(root , 0);
printf("%I64d\n",ans[root]);
}
return 0;
}