牛客练习赛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;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
11
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务