#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5, maxm = 2e5;
struct{
int v, nex;
long long w;
} edge[maxm << 1];
int n, m, q, vis = 0;
long long dst[maxn];
int head[maxn], top = 0;
inline void add(int u, int v, long long w){
edge[++top].v = v;
edge[top].w = w;
edge[top].nex = head[u];
head[u] = top;
}
inline void dfs(int u){
if (vis == n){
return;
}
for (int i = head[u]; i; i = edge[i].nex){
const int v = edge[i].v;
const long long w = edge[i].w;
if (dst[v] == -1){
vis++;
dst[v] = dst[u] ^ w;
dfs(v);
}
}
}
int main(){
memset(dst, -1, sizeof(dst));
scanf("%d %d %d", &n, &m, &q);
for (int i = 1; i <= m; i++){
int u, v;
long long w;
scanf("%d %d %lld", &u, &v, &w);
add(u, v, w);
add(v, u, w);
}
dst[1] = 0;
dfs(1);
for (int i = 1; i <= q; i++){
int x, y;
scanf("%d %d", &x, &y);
printf("%lld\n", dst[x] ^ dst[y]);
}
return 0;
}
评测记录