Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #include <cstdio>
  2. #include <queue>
  3. #include <iostream>
  4. using namespace std;
  5. int odleglosc[200001] = { -1 };
  6. vector <int> graf[500001];
  7. void bfs(int zrodlo)
  8. {
  9. odleglosc[zrodlo] = 0;
  10. queue <int> Q;
  11. Q.push(zrodlo);
  12. while(!Q.empty())
  13. {
  14. int v = Q.front();
  15. Q.pop();
  16. for(unsigned int i=0;i < graf[v].size();i++)
  17. {
  18. int a = graf[v][i];
  19. if(odleglosc[a] == -1)
  20. {
  21. odleglosc[a] = odleglosc[v] + 1;
  22. Q.push(a);
  23. }
  24. }
  25. }
  26. }
  27. int main()
  28. {
  29. int z;
  30. scanf("%d",&z);
  31. while(z--)
  32. {
  33. for(int i=0;i<200001;i++) odleglosc[i] = -1;
  34.  
  35. int n;
  36. scanf("%d",&n);
  37. int m;
  38. scanf("%d",&m);
  39.  
  40. for(int i=0;i<m;i++)
  41. {
  42. int a;
  43. scanf("%d",&a);
  44. int b;
  45. scanf("%d",&b);
  46. graf[a].push_back(b);
  47. graf[b].push_back(a);
  48. }
  49.  
  50. int ja;
  51. scanf("%d",&ja);
  52. bfs(ja);
  53. printf("Znajomi numeru %d:\n",ja);
  54. for(int i=1;i <= n ;i++)
  55. {
  56. if(odleglosc[i]>0)
  57. {
  58. printf("%d: ",i);
  59. printf("%d\n", odleglosc[i]);
  60. }
  61. }
  62. for(int i=0;i<200001;i++) odleglosc[i] = -1;
  63. int licznik =0;
  64. for(int i=1;i<=n;i++)
  65. {
  66. if(odleglosc[i]==-1)
  67. {
  68. bfs(i);
  69. licznik++;
  70. }
  71. }
  72. printf("Grup znajomych jest %d.\n",licznik);
  73.  
  74. }
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement