QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#105791#6317. XOR Tree PathSommohito#AC ✓76ms31908kbC++201.5kb2023-05-15 13:56:082023-05-15 13:56:10

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-15 13:56:10]
  • 评测
  • 测评结果:AC
  • 用时:76ms
  • 内存:31908kb
  • [2023-05-15 13:56:08]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#ifdef APURBA
#include "DEBUG_TEMPLATE.h"
#else
#define HERE
#define debug(args...)
#endif
#define ALL(x) x.begin(),x.end()
const int N = 1e5 +5;
typedef pair<int,int> pii;

int dp[N][2];
vector<int>adj[N];
int a[N];
int n;

int dfs(int s,int p, int flag)
{
    int &ret = dp[s][flag];
    if(ret!=-1)
        return ret;
    vector<int>all[2];
    for(int i:adj[s])
    {
        if(i==p)
            continue;
        all[0].push_back(dfs(i,s,0));
        all[1].push_back(dfs(i,s,1));
    }
    if(all[0].empty())
    {
        return ret = ((a[s]^flag)==1);
    }
    vector<vector<int> >dp(all[0].size()+1 , vector<int>(2));
    dp[all[0].size()][flag] = 0;
    dp[all[0].size()][flag^1] = -1e7;
    for(int i=(int)all[0].size()-1;i>=0;i--)
    {
        for(int j=0;j<=1;j++)
        {
            int ans = all[0][i] + dp[i+1][j^0];
            ans = max(ans , all[1][i] + dp[i+1][j^1]);
            dp[i][j] = ans;
        }
    }
    return ret = dp[0][0] + ((a[s]^flag)==1);
}

int32_t main()
{
#ifndef APURBA
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
#endif
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n-1;i++)
    {
        int u,v;
        cin>>u>>v;
        u--;
        v--;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    memset(dp,-1,sizeof dp);
    cout<<max(dfs(0,-1,0) , dfs(0,-1,1))<<"\n";
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 3ms
memory: 6476kb

input:

5
1 0 0 1 0
1 2
1 3
3 4
3 5

output:

5

result:

ok 1 number(s): "5"

Test #2:

score: 0
Accepted
time: 0ms
memory: 6512kb

input:

6
1 1 0 0 1 0
3 1
2 5
1 2
4 1
2 6

output:

5

result:

ok 1 number(s): "5"

Test #3:

score: 0
Accepted
time: 0ms
memory: 6448kb

input:

9
1 0 1 0 1 0 1 0 1
2 9
1 2
6 9
3 8
4 5
5 9
2 8
7 8

output:

6

result:

ok 1 number(s): "6"

Test #4:

score: 0
Accepted
time: 46ms
memory: 9280kb

input:

73537
0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 ...

output:

56486

result:

ok 1 number(s): "56486"

Test #5:

score: 0
Accepted
time: 6ms
memory: 6700kb

input:

4440
1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0...

output:

3419

result:

ok 1 number(s): "3419"

Test #6:

score: 0
Accepted
time: 44ms
memory: 8476kb

input:

55025
1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 0 ...

output:

42221

result:

ok 1 number(s): "42221"

Test #7:

score: 0
Accepted
time: 34ms
memory: 8880kb

input:

59260
1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 ...

output:

45452

result:

ok 1 number(s): "45452"

Test #8:

score: 0
Accepted
time: 24ms
memory: 8436kb

input:

48580
1 1 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 ...

output:

37287

result:

ok 1 number(s): "37287"

Test #9:

score: 0
Accepted
time: 68ms
memory: 10184kb

input:

100000
1 1 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1...

output:

76831

result:

ok 1 number(s): "76831"

Test #10:

score: 0
Accepted
time: 71ms
memory: 10164kb

input:

100000
1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0...

output:

76692

result:

ok 1 number(s): "76692"

Test #11:

score: 0
Accepted
time: 76ms
memory: 10156kb

input:

100000
0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0...

output:

76715

result:

ok 1 number(s): "76715"

Test #12:

score: 0
Accepted
time: 4ms
memory: 6568kb

input:

2
1 0
1 2

output:

1

result:

ok 1 number(s): "1"

Test #13:

score: 0
Accepted
time: 1ms
memory: 6532kb

input:

2
0 0
1 2

output:

2

result:

ok 1 number(s): "2"

Test #14:

score: 0
Accepted
time: 2ms
memory: 6452kb

input:

3
0 0 0
1 2
1 3

output:

2

result:

ok 1 number(s): "2"

Test #15:

score: 0
Accepted
time: 14ms
memory: 14112kb

input:

30258
1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 ...

output:

15162

result:

ok 1 number(s): "15162"

Test #16:

score: 0
Accepted
time: 40ms
memory: 22712kb

input:

63626
1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 ...

output:

31871

result:

ok 1 number(s): "31871"

Test #17:

score: 0
Accepted
time: 73ms
memory: 31908kb

input:

100000
0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1...

output:

50029

result:

ok 1 number(s): "50029"

Test #18:

score: 0
Accepted
time: 1ms
memory: 6556kb

input:

702
1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 ...

output:

532

result:

ok 1 number(s): "532"

Test #19:

score: 0
Accepted
time: 4ms
memory: 6576kb

input:

555
1 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 ...

output:

424

result:

ok 1 number(s): "424"

Test #20:

score: 0
Accepted
time: 1ms
memory: 6524kb

input:

81
0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1
1 31
11 53
51 76
10 17
12 68
10 43
36 56
79 81
55 56
68 81
27 50
18 64
29 36
8 59
4 52
6 7
4 54
5 16
49 56
38 41
24 33
25 52
32 71
14 5...

output:

57

result:

ok 1 number(s): "57"

Test #21:

score: 0
Accepted
time: 4ms
memory: 6512kb

input:

654
0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 0 ...

output:

503

result:

ok 1 number(s): "503"

Test #22:

score: 0
Accepted
time: 4ms
memory: 6584kb

input:

721
1 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 ...

output:

557

result:

ok 1 number(s): "557"

Test #23:

score: 0
Accepted
time: 15ms
memory: 9396kb

input:

30258
1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 ...

output:

30258

result:

ok 1 number(s): "30258"

Test #24:

score: 0
Accepted
time: 20ms
memory: 10572kb

input:

43363
0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 ...

output:

43363

result:

ok 1 number(s): "43363"

Test #25:

score: 0
Accepted
time: 27ms
memory: 16464kb

input:

100000
0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0...

output:

100000

result:

ok 1 number(s): "100000"

Test #26:

score: 0
Accepted
time: 5ms
memory: 6480kb

input:

20
0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0
1 20
17 18
10 11
5 19
5 12
6 18
2 13
8 18
8 13
13 15
1 3
5 11
14 15
3 16
9 17
7 19
4 12
4 16
7 15

output:

13

result:

ok 1 number(s): "13"

Test #27:

score: 0
Accepted
time: 0ms
memory: 6436kb

input:

8
1 0 0 1 0 1 0 0
3 5
3 8
1 2
6 8
3 4
1 6
7 8

output:

6

result:

ok 1 number(s): "6"