UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#214576#2376. 树与异或KXG403992ms73256kbC++111.4kb2024-11-20 18:49:592024-11-20 23:00:45

answer

#include <cstdio>
#include <vector>
using namespace std;
const int mod = 1e9 + 7;
int n, q, u, v, x, y;
vector<int> G[1000010];
int fa[1000010], a[1000010];
int x1[1000010], x2[1000010];
long long ans;
void dfs(int u, int f = 0) {
    fa[u] = f;
    x1[u] = a[u];
    x2[u] = a[u];
    for (int v : G[u]) {
        if (v == f) continue;
        dfs(v, u);
        x1[u] ^= a[v];
        x2[u] ^= x1[v];
    }
}
int main() {
    scanf("%d%d", &n, &q);
    for (int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
    }
    for (int i = 1; i < n; i++) {
        scanf("%d%d", &u, &v);
        G[u].push_back(v);
        G[v].push_back(u);
    }
    dfs(1);
    for (int i = 1; i <= q; i++) {
        scanf("%d%d", &x, &y);
        x1[x] ^= a[x];
        x2[x] ^= a[x];
        if (fa[x]) {
            x1[fa[x]] ^= a[x];
            x2[fa[x]] ^= a[x];
        }
        if (fa[fa[x]]) {
            x2[fa[fa[x]]] ^= a[x];
        }
        a[x] = y;
        x1[x] ^= a[x];
        x2[x] ^= a[x];
        if (fa[x]) {
            x1[fa[x]] ^= a[x];
            x2[fa[x]] ^= a[x];
        }
        if (fa[fa[x]]) {
            x2[fa[fa[x]]] ^= a[x];
        }
        int nowans = 0;
        nowans = x1[fa[x]] ^ a[fa[fa[x]]] ^ x2[x] ^ a[x];
        ans += 1ll * nowans * i % mod * i % mod;
        ans %= mod;
    }
    printf("%lld\n", ans);
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 0
Wrong Answer
time: 3ms
memory: 24596kb

input:

1000 994
780089107 4670366 871010085 73730768 526852049 572589363 885190993 1049357301 450850404 460...

output:

986389582

result:

wrong answer 1st numbers differ - expected: '503748432', found: '986389582'

Test #2:

score: 10
Accepted
time: 3ms
memory: 24596kb

input:

1000 999
26885995 181771373 378079250 245122183 660787775 479226046 575400611 257120086 214404794 48...

output:

301019013

result:

ok 1 number(s): "301019013"

Test #3:

score: 0
Wrong Answer
time: 0ms
memory: 24592kb

input:

1000 994
978408146 31636243 945016735 512129400 92881624 689719983 649699545 964802847 100094796 941...

output:

659045821

result:

wrong answer 1st numbers differ - expected: '250985726', found: '659045821'

Test #4:

score: 0
Wrong Answer
time: 76ms
memory: 29232kb

input:

100000 99994
194640838 777315353 114710204 754050649 372592717 210279787 542056883 638262010 7998293...

output:

781171918

result:

wrong answer 1st numbers differ - expected: '897014293', found: '781171918'

Test #5:

score: 10
Accepted
time: 65ms
memory: 29236kb

input:

100000 100000
458877901 215980825 777376132 863774865 34430451 828397116 94813690 931300514 10548367...

output:

351450518

result:

ok 1 number(s): "351450518"

Test #6:

score: 10
Accepted
time: 70ms
memory: 29236kb

input:

100000 99991
56406146 757409402 876799234 573444553 883023109 326033134 328116703 623771278 41269529...

output:

440189625

result:

ok 1 number(s): "440189625"

Test #7:

score: 0
Wrong Answer
time: 949ms
memory: 73252kb

input:

1000000 999998
814298729 663807029 628693441 45635199 148428014 913833778 1034283337 600802841 58045...

output:

197197519

result:

wrong answer 1st numbers differ - expected: '447637970', found: '197197519'

Test #8:

score: 10
Accepted
time: 966ms
memory: 73256kb

input:

1000000 999993
112899321 425466951 471078924 857561298 449437156 710041336 1033281580 23390934 44420...

output:

449713864

result:

ok 1 number(s): "449713864"

Test #9:

score: 0
Wrong Answer
time: 914ms
memory: 73256kb

input:

1000000 1000000
273043260 1042513348 30746190 864557483 187812119 562837674 263192174 364182254 3537...

output:

871609367

result:

wrong answer 1st numbers differ - expected: '922464355', found: '871609367'

Test #10:

score: 0
Wrong Answer
time: 946ms
memory: 73256kb

input:

1000000 999995
83067658 1064735371 623243759 757522311 539363923 924297206 75317137 543750195 822898...

output:

53420127

result:

wrong answer 1st numbers differ - expected: '318242296', found: '53420127'