1076 Forwards on Weibo (30 分)

样例解释

 

这题简单是简单 但是题目理解久了  这题用bfs遍历题要好点

#include<bits/stdc++.h>

using namespace std;
int n,l;
const int N=1e3+10;
vector<int>vec[N];
int num=0;
struct node
{
    int to;
    int step;
    node(int _to=0,int _step=0):to(_to),step(_step){}
};
bool vis[N];
void bfs(int v)
{
    vis[v]=true;
    queue<node>Q;
    Q.push(node(v,0));
    node u=Q.front();
    while(!Q.empty()){
        node u=Q.front();
        if(u.step>l) return;
        num++;
        Q.pop();
        int to=u.to;
        for(int i=0;i<vec[to].size();i++){
            if(!vis[vec[to][i]]){
                Q.push(node(vec[to][i],u.step+1));
                vis[vec[to][i]]=true;
            }
        }
    }
}
int main()
{
    scanf("%d %d",&n,&l);
    for(int i=1;i<=n;i++){
        int k;
        scanf("%d",&k);
        for(int j=0;j<k;j++){
            int x;
            scanf("%d",&x);
            vec[x].push_back(i);
        }
    }
    int k;
    scanf("%d",&k);
    for(int i=0;i<k;i++){
        int x;
        fill(vis,vis+N,false);
        num=0;
        scanf("%d",&x);
        bfs(x);
        printf("%d\n",num-1);
    }
    return 0;
}

 

posted @ 2018-12-13 22:08  12-num  阅读(952)  评论(0编辑  收藏  举报