1076. Forwards on Weibo (30)

来源:互联网 发布:wps表格怎么引用数据 编辑:程序博客网 时间:2024/06/09 13:53
#include<cstdio>#include<queue>#include<algorithm>using namespace std;#define maxn 1010struct Node{  int id;  int layer;};vector<Node> G[maxn];bool vis[maxn]={false};int n,L,x,k,i,j,cnt=0;Node node,temp;//广度遍历,u为当前遍历的节点,deep为深度void BFS(int u){  queue<Node> qu;  Node start;  start.id = u;  start.layer = 0;  qu.push(start);  vis[start.id] = true;  while (!qu.empty())  {    Node front = qu.front();    if(front.layer !=0 && front.layer <= L)    {      cnt++;    }    qu.pop();    int s = front.id;    for(int i=0; i<G[s].size(); i++)    {      Node next = G[s][i];      next.layer = front.layer + 1;      if(vis[next.id] == false)      {        qu.push(next);        vis[next.id] = true;      }    }  }}int main(){  //输入数据  scanf("%d%d",&n,&L);  //构造图  for(i=1; i<=n; i++)  {    temp.id = i;    temp.layer = 0;    scanf("%d",&x);    for(j=0; j<x; j++)    {      scanf("%d",&node.id);      node.layer = 0;      G[node.id].push_back(temp);    }  }  //输入需要开始遍历的节点,并遍历和输出结果  scanf("%d",&k);  for(int i=0; i<k; i++)  {    int a;    scanf("%d",&a);    BFS(a);    printf("%d\n",cnt);    cnt = 0;    for(int i=1; i<=n; i++)      vis[i] = false;        }  return 0;}

0 0
原创粉丝点击