zoukankan      html  css  js  c++  java
  • HDU6228 Tree

    本题是一个思维题,我们想到,如果一个边左右两侧的点都超过k个,那么他就可以用交集,不然的话就没有交集,因为会有一遍没法k个

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    #include<vector>
    #include<string>
    #include<cstring>
    #include<map>
    #include<set>
    using namespace std;
    typedef long long ll;
    const int N=1e5+10;
    const int inf=0x3f3f3f3f;
    vector<int> m[N];
    int s[N];
    void dfs(int u,int fa){
        int i;
        s[u]=1;
        for(i=0;i<m[u].size();i++){
            if(m[u][i]==fa)
            continue;
            dfs(m[u][i],u);
            s[u]+=s[m[u][i]];
        }
    }
    int main(){
        int t;
        int n,k;
        cin>>t;
        while(t--){
            cin>>n>>k;
            memset(s,0,sizeof s);
            for(int i=1;i<=n;i++)
            m[i].clear();
            for(int i=0;i<n-1;i++){
                int u,v;
                scanf("%d%d",&u,&v);
                m[u].push_back(v);
                m[v].push_back(u);
            }
            dfs(1,-1);
            int ans=0;
            for(int i=1;i<=n;i++){
                if(s[i]>=k&&n-s[i]>=k)
                ans++;
            }
            printf("%d
    ",ans);
        } 
    }
    View Code
  • 相关阅读:
    alpha冲刺1/4
    第二次作业
    第一次作业
    第一次个人作业
    第10组 Beta版本演示
    第10组 Beta冲刺(4/4)
    第10组 Beta冲刺(3/4)
    第10组 Beta冲刺(2/4)
    第10组 Beta冲刺(1/4)
    第10组 Alpha冲刺(4/4)
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12325338.html
Copyright © 2011-2022 走看看