牛客练习赛97 D

月之暗面

https://ac.nowcoder.com/acm/contest/11187/D

直接树形 dp,记录当根节点颜色假如已经被确定时的两种方案对应方案数即可。

std::vector<uint>Way[1000005];
modint x,y;
modint Kind[1000005][2];
voi dfs(uint p,uint f)
{
    Kind[p][0]=Kind[p][1]=1;
    for(uint s:Way[p])if(s!=f)
    {
        dfs(s,p);
        Kind[p][0]*=Kind[s][0]*x+Kind[s][1]*y;
        Kind[p][1]*=Kind[s][0]*x+Kind[s][1]*(y-1);
    }
}
int main()
{
    uint n,u,v;scanf("%u",&n);x.read(),y.read();
    while(--n)
        scanf("%u%u",&u,&v),Way[--u].push_back(--v),Way[v].push_back(u);
    dfs(0,-1);
    (Kind[0][0]*x+Kind[0][1]*y).println();
	return 0;
}
全部评论

相关推荐

04-17 10:16
门头沟学院 Java
不河狸啊:为什么我的是已送达,连已读都没有
点赞 评论 收藏
分享
被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
评论
11
1
分享

创作者周榜

更多
牛客网
牛客企业服务