fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. //graph bfs
  7. int main() {
  8. // your code goes here
  9. int n ; int m ;
  10. cin>>n>>m;
  11. vector<vector<int>>adj(n+1);
  12. vector<bool>vis(n+1,false);
  13. int level[n+1];
  14. for(int i = 0 ; i < m ; i++){
  15. int u ; int v ;
  16. cin>>u>>v;
  17. adj[u].push_back(v);
  18. adj[v].push_back(u);
  19. }
  20. vector<int>val(n+1);
  21. for(int i = 1 ; i<=n;i++)cin>>val[i];
  22. int src = 1;
  23. vis[src]=true;
  24. queue<int>q;
  25. q.push(src);
  26. int child[n+1];
  27. int count1[n+1]={0};
  28. count1[1]=val[1];
  29. while(!q.empty()){
  30. int curr = q.front();
  31. q.pop();
  32. int count = 0 ;
  33. for(auto adjacent : adj[curr]){
  34. if(!vis[adjacent]){
  35. vis[adjacent]=true;
  36. q.push(adjacent);
  37. count1[adjacent]=val[adjacent]+count1[curr];
  38. }
  39. }
  40. }
  41.  
  42. cout<<count1[8]<<endl;
  43. cout<<count1[5]<<endl;
  44. cout<<count1[1]<<endl;
  45. cout<<count1[7]<<endl;
  46. cout<<count1[6]<<endl;
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 5320KB
stdin
8 7 
1 2 
1 3
2 4
2 5
3 6
3 7  
3 8
0 1 1 0 1 0 1 1
stdout
2
2
0
2
1