hdu 4707

来源:互联网 发布:淘宝联盟鹊桥招商 编辑:程序博客网 时间:2024/06/16 14:35

题目


题意:找出距离0点距离>d的点数

题意:我用的bfs求出点的距离

#include<stdio.h>#include<string.h>#include<vector>#include<queue>#include<algorithm>using namespace std;#define N 100010int t,n,d;int a,b;vector<int>e[N];int dis[N];bool vis[N];int main(){    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&d);        for(int i=0;i<=n;i++) e[i].clear(),dis[i]=N;        dis[0]=0;        memset(vis,0,sizeof(vis));        for(int i=0;i+1<n;i++)            scanf("%d%d",&a,&b),e[a].push_back(b),e[b].push_back(a);        queue<int>q;        q.push(0);        vis[0]=1;        while(!q.empty())        {            int x=q.front();            q.pop();            for(int i=0;i<e[x].size();i++)            {                int y=e[x][i];                if(vis[y]==0)                {                    dis[y]=dis[x]+1;                    vis[y]=1;                    q.push(y);                }            }        }        int cnt=0;        for(int i=0;i<n;i++) cnt+=(dis[i]>d);        printf("%d\n",cnt);    }}


原创粉丝点击