fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. list<int>adj[100001];
  4. int dis[100001]={0};
  5. bool visited [100001];
  6. void bfs(int start)
  7. {
  8. list < pair < int,int > > q;
  9. pair < int , int > temp;
  10. int x,y;
  11. q.push_back(make_pair(start,-1));
  12. list <int>::iterator ii;
  13. while(!q.empty())
  14. {
  15. temp=q.front();
  16. q.pop_front();
  17. if(visited[temp.first])
  18. continue;
  19. x=temp.first;
  20. y=temp.second;
  21. visited[x]=true;
  22. dis[x]=y+1;
  23. for(ii=adj[x].begin();ii!=adj[x].end();ii++)
  24. {
  25. if(visited[*ii]!=true)
  26. {
  27. q.push_back(make_pair(*ii,dis[x]));
  28. }
  29. }
  30. }
  31. }
  32. int main()
  33. {
  34. int n,m,i,j,k,buff,buff2,ctr=0;
  35. cin>>n;
  36. for(i=0;i<n;i++)
  37. {
  38. int i;
  39. scanf("%d",&buff);
  40. adj[1].push_back(buff);
  41. scanf("%d",&m);
  42. for(j=0;j<m;j++)
  43. {
  44. scanf("%d",&buff2);
  45. adj[buff].push_back(buff2);
  46. }
  47. }
  48. bfs(1);
  49. for(i=1000;i<=9999;i++)
  50. {
  51. if(dis[i]==2)
  52. ctr++;
  53. }
  54. printf("%d",ctr);
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0s 4500KB
stdin
Standard input is empty
stdout
Standard output is empty