码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5326 work (回溯,树)

时间:2015-07-28 20:51:40      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

题意:给一棵树,每个结点的子树下的结点都是它的统治对象,问有多少个统治对象数目为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\n",cal(n));
    }
    return 0;
}
AC代码

 

HDU 5326 work (回溯,树)

标签:

原文地址:http://www.cnblogs.com/xcw0754/p/4684155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!