fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. cin>>n;
  7. vector<int> adjList[n+1];
  8. vector<int> nodeVal(n+1,0);
  9. vector<int> visited(n+1,0);
  10. vector<int> numberOfOnes(n+1,0);
  11. for(int i=1;i<=n-1;i++){
  12. int x,y;
  13. cin>>x>>y;
  14. adjList[x].push_back(y);
  15. adjList[y].push_back(x);
  16. }
  17. for(int i=1;i<=n;i++){
  18. int val;
  19. cin>>val;
  20. nodeVal[i]=val;
  21. }
  22. visited[1]=1;
  23. queue<int> q;
  24. q.push(1);
  25. numberOfOnes[1]=nodeVal[1];
  26. while(!q.empty()){
  27. int node=q.front();
  28. q.pop();
  29. for(auto child : adjList[node]){
  30. if(visited[child]==0){
  31. q.push(child);
  32. visited[child] = 1;
  33. if(nodeVal[child]==1)
  34. numberOfOnes[child]=numberOfOnes[node]+1;
  35. else
  36. numberOfOnes[child]=numberOfOnes[node];
  37. }
  38. }
  39.  
  40. }
  41. for(int i=1;i<=n;i++){
  42. cout<<"node "<<i<<" : "<<numberOfOnes[i];
  43. cout<<"\n";
  44. }
  45. return 0;
  46. }
Success #stdin #stdout 0.01s 5328KB
stdin
7
1 2
1 3
2 4
2 5
3 6
3 7
1 1 0 1 1 0 1
stdout
node 1 : 1
node 2 : 2
node 3 : 1
node 4 : 3
node 5 : 3
node 6 : 1
node 7 : 2