a53

arbori_xor

a53
Sep 15th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <queue>
  4. #include <vector>
  5. using namespace std;
  6. ifstream fin("arbori_xor.in");
  7. ofstream fout("arbori_xor.out");
  8. deque <int> coada;
  9. vector <pair<int,int> > L[10009];
  10. int s[10009],t[10009],n,q,i,x,y,z,a,b;
  11. void bfs(int nod){
  12. int vecin;
  13. int cost;
  14. coada.push_back(nod);
  15. while(!coada.empty()){
  16. nod=coada.front();
  17. coada.pop_front();
  18. for(int i=0;i<L[nod].size();i++){
  19. vecin=L[nod][i].first;
  20. cost=L[nod][i].second;
  21. if(t[nod]==vecin)
  22. continue;
  23. coada.push_back(vecin);
  24. t[vecin]=nod;
  25. s[vecin]=s[nod]^cost;
  26. }
  27. }
  28. }
  29. int query(int a,int b){
  30. return s[a]^s[b];
  31. }
  32. int main()
  33. {
  34. fin>>n>>q;
  35. for(i=1;i<n;i++){
  36. fin>>x>>y>>z;
  37. L[x].push_back({y,z});
  38. L[y].push_back({x,z});
  39. }
  40. bfs(1);
  41. for(i=1;i<=q;i++){
  42. fin>>a>>b;
  43. fout<<query(a,b)<<"\n";
  44. }
  45. }
Add Comment
Please, Sign In to add comment