Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using pii = pair<int,int>;
- vector <pii> g[100001];
- int XOR[100001];
- bool visited[100001];
- int main(){
- int n,m;
- scanf("%d%d",&n,&m);
- for(int i=1;i<=n-1;i++){
- int u,v,w;
- scanf("%d%d%d",&u,&v,&w);
- g[u].push_back({v,w});
- g[v].push_back({u,w});
- }
- queue <pii> q;
- q.push({1,0});
- XOR[1] = 0;
- while(q.size() > 0){
- int u,d;
- u = q.front().first;
- d = q.front().second;
- q.pop();
- if(visited[u]) continue;
- visited[u] = true;
- for(auto vw:g[u]){
- int v,w;
- v = vw.first;
- w = vw.second;
- if(!visited[v]){
- XOR[v] = w^d;
- q.push({v,w^d});
- }
- }
- }
- for(int i=1;i<=m;i++){
- int u,v;
- scanf("%d%d",&u,&v);
- printf("%d\n",XOR[u]^XOR[v]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement