求助,后六个点WA。
查看原帖
求助,后六个点WA。
660816
Claire0918楼主2023/1/18 09:54
#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;
}

评测记录

2023/1/18 09:54
加载中...