fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3.  
  4. using namespace std;
  5. int main() {
  6. int n,e;
  7. cin>>n>>e;
  8. vector<int> g[n+1];
  9.  
  10. for(int i=1;i<=e;i++){
  11. int u;
  12. int v;
  13. cin>>u>>v;
  14.  
  15. g[u].push_back(v);
  16. g[v].push_back(u);
  17. }
  18.  
  19. int s;
  20. cin>>s;
  21. queue<int> q;
  22. q.push(s);
  23. vector<int> level(n+1,-1);
  24. level[s]=0;
  25.  
  26. vector<int> visited(n+1);
  27. visited[s]=1;
  28. vector<int> ways(n+1,0);
  29. ways[s]=1;
  30.  
  31.  
  32.  
  33.  
  34.  
  35. while(!q.empty()){
  36. int a = q.front();
  37.  
  38.  
  39. q.pop();
  40.  
  41.  
  42. for(auto it : g[a]){
  43. if(!visited[it]){
  44. q.push(it);
  45. visited[it]=1;
  46. level[it] = level[a]+1;
  47. ways[it]=ways[a];
  48. }
  49. else{
  50. if(level[it]==level[a]+1){
  51. ways[it] = ways[it] + ways[a];
  52.  
  53. }
  54. }
  55. }
  56. }
  57.  
  58. for(int i=1;i<=n;i++){
  59. cout<< ways[i] << " ";
  60.  
  61.  
  62. }
  63. }
Success #stdin #stdout 0.01s 5288KB
stdin
4 4
1 2
1 3
2 4
3 4
1
stdout
1 1 1 2