牛客挑战赛45 B-我是A题

我是 A 题

https://ac.nowcoder.com/acm/contest/8563/B

我是A题

分析:

还是一个贪心,能合并就合并
图片说明
因为一个子节点如果不符合条件,那么他一定会和他的根节点合并起来,不然就会不符合条件,也就是说,我们求出以每一个节点为根的子树内部的w值模k的总和,如果这个子树中的w值为0,说明他可以自成一体,不用再与父节点合并了,反之,则要加上那一条边

代码

#include<bits/stdc++.h>

#define ll long long

using namespace std;

const int N=1e6+10;

ll n,k,tot,ans;
ll h[N],nex[N<<1],ver[N<<1],pri[N<<1];
ll w[N];

inline void add(ll x,ll y,ll z)
{
    nex[tot]=h[x];
    ver[tot]=y;
    pri[tot]=z;
    h[x]=tot++;
}

inline void dfs(ll u,ll v)
{
    for (ll i=h[u];~i;i=nex[i])
    {
        ll j=ver[i];
        if(j==v) continue;

        dfs(j,u);

        w[u]=(w[u]+w[j])%k;
        if(w[j]!=0) ans+=pri[i];
    }
}

int main()
{
    memset(h,-1,sizeof(h));
    scanf("%lld%lld",&n,&k);
    for (ll i=1;i<=n;i++)
        scanf("%lld",&w[i]),w[i]%=k;
    for (ll i=1;i<n;i++)
    {
        ll x,y,z;
        scanf("%lld%lld%lld",&x,&y,&z);
        add(x,y,z),add(y,x,z);
    }

    dfs(1,0);

    printf("%lld\n",ans);

    return 0;
}
比赛题解 文章被收录于专栏

牛客IOI周赛,团队赛,练习赛,挑战赛,各种模拟赛的部分题解

全部评论

相关推荐

寿命齿轮:实习就一段还拉了,项目一看就不是手搓,学历也拉了,技术栈看着倒是挺好,就是不知道面试表现能咋样。 不过现在才大三,争取搞两端大厂实习,或者一个纯个人项目+一段大厂,感觉秋招还是未来可期。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
7
收藏
分享
正在热议
# 25届秋招总结 #
442570次浏览 4512人参与
# 春招别灰心,我们一人来一句鼓励 #
41986次浏览 533人参与
# 阿里云管培生offer #
120258次浏览 2220人参与
# 地方国企笔面经互助 #
7962次浏览 18人参与
# 同bg的你秋招战况如何? #
76743次浏览 563人参与
# 虾皮求职进展汇总 #
115687次浏览 886人参与
# 北方华创开奖 #
107435次浏览 599人参与
# 实习,投递多份简历没人回复怎么办 #
2454714次浏览 34857人参与
# 实习必须要去大厂吗? #
55775次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149906次浏览 1977人参与
# 投递实习岗位前的准备 #
1195950次浏览 18549人参与
# 你投递的公司有几家约面了? #
33206次浏览 188人参与
# 双非本科求职如何逆袭 #
662248次浏览 7397人参与
# 如果公司给你放一天假,你会怎么度过? #
4757次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157635次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11584次浏览 287人参与
# 发工资后,你做的第一件事是什么 #
12734次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35815次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20133次浏览 240人参与
# 我的上岸简历长这样 #
452024次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39303次浏览 314人参与
# 非技术岗是怎么找实习的 #
155868次浏览 2120人参与
牛客网
牛客企业服务