fork(1) download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5.  
  6. void dfs(vector<bool>&vis,vector<vector<int>>&adjlist,int curr,vector<int>&sum){
  7. vis[curr]=true;
  8.  
  9. for(int adj : adjlist[curr]){
  10. if(!vis[adj]){
  11.  
  12. dfs(vis,adjlist,adj,sum);
  13. sum[curr]+=sum[adj];
  14. }
  15. }
  16. sum[curr]+=curr;
  17.  
  18. }
  19. int main() {
  20. int n ; int m ;
  21. cin>>n>>m;
  22. vector<vector<int>>adjlist(n+1);
  23. vector<bool>vis(n+1,false);
  24. vector<int>sum(n+1,0);
  25. for(int i = 0 ; i<m;i++){
  26. int u ; int v ;
  27. cin>>u>>v;
  28. adjlist[u].push_back(v);
  29. adjlist[v].push_back(u);
  30. }
  31. dfs(vis,adjlist,1,sum);
  32. int i = 1;
  33. while(i<=n){
  34. cout<<sum[i]<<" ";
  35. i++;
  36. }
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 5316KB
stdin
8 7
1 2 
2 3 
1 4
4 5
2 6 
5 8
5 7 
-5 -3 -2 5 6 7 2 -1 
stdout
36 11 3 24 20 6 7 8