您的位置:首页 > 其它

2013 ACM/ICPC Asia Regional Online —— Warmup 1002

2013-09-08 17:20 525 查看
在根节点有一个影响范围为D的笼子,问有多少个点不在这个笼子范围内
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<queue>using namespace std;struct node{    int x,y,next;}edge[200010];int n,d,T,p,ans;int h[100010],used[100010],dis[100010];queue<int> myqueue;void Init(int x,int y)//存边{    edge[p].x=x;    edge[p].y=y;    edge[p].next=h[x];    h[x]=p++;}void BFS(){    int i,j,k,step=0;    while (!myqueue.empty()) myqueue.pop();    memset(used,0,sizeof(used));    myqueue.push(0);    used[0]=1;dis[0]=0;    while (!myqueue.empty())    {        int first;        first=myqueue.front();        myqueue.pop();        if (dis[first]>=d) continue;        for (i=h[first];i!=-1;i=edge[i].next)        {            if (!used[edge[i].y])            {                dis[edge[i].y]=dis[first]+1;                used[edge[i].y]=1;                ans++;                myqueue.push(edge[i].y);            }        }    }}int main(){    int x,y,i,j;    scanf("%d",&T);    while (T--)    {        p=0;        ans=1;        for (i=0;i<100010;i++) h[i]=-1;        memset(dis,0,sizeof(dis));        memset(edge,0,sizeof(edge));        scanf("%d%d",&n,&d);        for (i=1;i<n;i++)        {            scanf("%d%d",&x,&y);            Init(x,y);        }        BFS();        printf("%d\n",n-ans);    }    return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐