Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <queue>
- #include <iostream>
- using namespace std;
- int odleglosc[200001] = { -1 };
- vector <int> graf[500001];
- void bfs(int zrodlo)
- {
- odleglosc[zrodlo] = 0;
- queue <int> Q;
- Q.push(zrodlo);
- while(!Q.empty())
- {
- int v = Q.front();
- Q.pop();
- for(unsigned int i=0;i < graf[v].size();i++)
- {
- int a = graf[v][i];
- if(odleglosc[a] == -1)
- {
- odleglosc[a] = odleglosc[v] + 1;
- Q.push(a);
- }
- }
- }
- }
- int main()
- {
- int z;
- scanf("%d",&z);
- while(z--)
- {
- for(int i=0;i<200001;i++) odleglosc[i] = -1;
- int n;
- scanf("%d",&n);
- int m;
- scanf("%d",&m);
- for(int i=0;i<m;i++)
- {
- int a;
- scanf("%d",&a);
- int b;
- scanf("%d",&b);
- graf[a].push_back(b);
- graf[b].push_back(a);
- }
- int ja;
- scanf("%d",&ja);
- bfs(ja);
- printf("Znajomi numeru %d:\n",ja);
- for(int i=1;i <= n ;i++)
- {
- if(odleglosc[i]>0)
- {
- printf("%d: ",i);
- printf("%d\n", odleglosc[i]);
- }
- }
- for(int i=0;i<200001;i++) odleglosc[i] = -1;
- int licznik =0;
- for(int i=1;i<=n;i++)
- {
- if(odleglosc[i]==-1)
- {
- bfs(i);
- licznik++;
- }
- }
- printf("Grup znajomych jest %d.\n",licznik);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement