每日一题 6月2日 旅游 树的最大独立集

题目链接:https://ac.nowcoder.com/discuss/434394
图片说明
图片说明

#include <bits/stdc++.h>
#define LL long long
using namespace std;

vector<int> v[500005];
int f[500005][2];
void DFS(int u, int fa){

    f[u][1]=1;
    for(auto x: v[u]){
        if(x!=fa){
            DFS(x, u);
            f[u][1]+=f[x][0];
            f[u][0]+=max(f[x][0], f[x][1]);
        }
    }
}

int main(){

    int n, s, x, y; scanf("%d%d", &n, &s);
    for(int i=1; i<n; i++){
        scanf("%d%d", &x, &y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    DFS(s, 0);
    printf("%d\n", f[s][1]);

    return 0;
}
全部评论

相关推荐

工作30年还房贷:比赛加学历就已经够了。你要挑点毛病的话,项目写的不行,没有突出深度,你可能做了很多深度工作,但给别人的感觉都是做的很简单的工作。
点赞 评论 收藏
分享
12-05 15:53
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务