zoukankan      html  css  js  c++  java
  • HDU 5326 work (回溯,树)

    题意:给一棵树,每个结点的子树下的结点都是它的统治对象,问有多少个统治对象数目为k的结点?

    思路:每个结点都设一个cnt来记数,只要将每个结点往上回溯,直到树根,经过的每个结点都将计数器加1。最后再扫一遍,将cnt等于k的结点统计一下。

    #include <bits/stdc++.h>
    #define LL long long
    #define pii pair<int,int>
    #define INF 0x7f7f7f7f
    using namespace std;
    const int N=200;
    int cnt[N];
    unordered_map<int,int>  mapp;
    int k;
    
    int cal(int n)
    {
        memset(cnt,0,sizeof(cnt));
        for(int i=1; i<=n; i++)
        {
            int t=i;
            while(mapp[t])
            {
                t=mapp[t];
                cnt[t]++;
            }
        }
        int ans=0;
        for(int i=1; i<=n; i++)    if(cnt[i]==k)   ans++;
        return ans;
    
    }
    
    int main()
    {
        //freopen("input.txt", "r", stdin);
        int n, m,  t, a, b, c, j=0;
        while(~scanf("%d%d",&n,&k))
        {
            mapp.clear();
            for(int i=1; i<n; i++)
            {
                scanf("%d%d",&a,&b);
                mapp[b]=a;
            }
            printf("%d
    ",cal(n));
        }
        return 0;
    }
    AC代码
  • 相关阅读:
    SVN 图标消失
    svn 图标不显示
    wamp 局域网访问
    php程序 注册机制
    ThinkphpCMF笔记
    thinkphp缓存
    wampserver与 thinkphp 安装
    js function集合
    php function集合
    php sleep
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4684155.html
Copyright © 2011-2022 走看看