QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#739488#7684. Sweet Sugarrqoi031WA 136ms5728kbC++201.4kb2024-11-12 21:55:322024-11-12 21:55:34

Judging History

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

  • [2024-11-12 21:55:34]
  • 评测
  • 测评结果:WA
  • 用时:136ms
  • 内存:5728kb
  • [2024-11-12 21:55:32]
  • 提交

answer

#include<stdio.h>
#include<algorithm>
#include<tuple>
struct edge {
    int v,next;
};
edge e[2000005];
int en,last[1000005];
inline void add_edge(const int &u,const int &v) {
    e[++en]={v,last[u]},last[u]=en;
    e[++en]={u,last[v]},last[v]=en;
}
int c[1000005];
inline void solve() {
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++) {
        scanf("%d",c+i);
    }
    std::fill(last+1,last+n+1,0),en=0;
    for(int i=1;i<n;i++) {
        int u,v;
        scanf("%d%d",&u,&v);
        add_edge(u,v);
    }
    const auto dfs([&](const auto &self,const int &u,const int &fa)->std::tuple<int,int,int,int> {
        int s(0),x(c[u]),y(c[u]==1?1:1000000000),z(c[u]==1?1:0);
        for(int i=last[u];i;i=e[i].next) {
            const int &v(e[i].v);
            if(v==fa) {
                continue;
            }
            const auto &[s0,x0,y0,z0](self(self,v,u));
            s+=s0,x+=x0;
            y=std::min(y,y0);
            z=std::max(z,z0);
        }
        if([&]()->bool {
            if((x^k)&1) {
                return std::max(x-y,z-1)>=k;
            }
            return x>=k;
        }()) {
            ++s,x=0,y=1000000000,z=0;
        }
        return {s,x,y,z};
    });
    printf("%d\n",std::get<0>(dfs(dfs,1,0)));
}
int main() {
    int t;
    scanf("%d",&t);
    while(t--) {
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5636kb

input:

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

output:

2
0
1
0

result:

ok 4 number(s): "2 0 1 0"

Test #2:

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

input:

12
1 1
0
1 1
1
1 1
2
1 2
0
1 2
1
1 2
2
1 3
0
1 3
1
1 3
2
1 2000000
0
1 2000000
1
1 2000000
2

output:

0
1
0
0
0
1
0
0
0
0
0
0

result:

ok 12 numbers

Test #3:

score: -100
Wrong Answer
time: 136ms
memory: 5700kb

input:

200000
5 2
1 1 0 0 1
2 4
5 2
4 1
3 2
5 1
0 0 0 0 0
5 1
1 2
3 2
5 4
5 3
1 0 0 0 1
1 4
4 2
3 4
5 2
5 9
1 0 0 0 2
4 3
2 1
3 1
5 1
5 3
0 1 1 0 1
5 4
2 1
4 3
5 1
5 1
0 2 1 1 1
5 3
2 4
3 4
1 4
5 1
1 0 1 1 0
1 5
4 2
1 3
5 2
5 7
0 2 1 1 2
5 1
2 3
2 5
5 4
5 5
0 1 0 1 0
2 4
4 3
5 2
1 5
5 1
0 0 1 0 1
4 1
4 5
2...

output:

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

result:

wrong answer 73rd numbers differ - expected: '1', found: '2'