UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#214842#2642. colora_sad_soul01241ms19624kbC++111.4kb2024-11-22 19:02:472024-11-22 23:11:20

answer

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 5e5+10;
int cnt[MAXN];
int a[MAXN];
vector<int>e[MAXN];
int top[MAXN],dep[MAXN],fa[MAXN],siz[MAXN],son[MAXN],id[MAXN],rev[MAXN],dfn;
void dfs1(int u,int f){
    
    dep[u]=dep[f]+1;fa[u]=f;siz[u]=1;
    cnt[u]=cnt[f]+a[u];
    for(int v:e[u]){
        if(v==f)continue;
        dfs1(v,u);
        if(siz[v]>siz[son[u]])son[u]=v;
    }
}
void dfs2(int u){
    id[u]=++dfn;rev[dfn]=u;
    if(son[fa[u]]==u)top[u]=top[fa[u]];
    else top[u]=u;
    if(!son[u])return ;
    dfs2(son[u]);
    for(int v:e[u]){if(v==fa[u]||v==son[u])continue;dfs2(v);}
}
int LCA(int x,int y){
    while(top[x]!=top[y]){
        if(dep[top[x]]<dep[top[y]])swap(x,y);
        x=fa[top[x]];
    }
    if(dep[x]>dep[y])swap(x,y);
    return x;
}
typedef pair<int,int>arr;
arr Check(int x,int y){
    int lca=LCA(x,y);
    return arr(dep[x]+dep[y]-dep[lca]+1,(cnt[x]+cnt[y]-2*cnt[lca]+a[lca]));
}
int n,m;
char s[MAXN];
int main(){
    scanf("%d%d",&n,&m);
    scanf("%s",s+1);
    for(int i=1;i<=n;++i)a[i]=s[i]=='H';
    for(int i=1;i<n;++i){int u,v;scanf("%d%d",&u,&v);e[u].push_back(v),e[v].push_back(u);}
    dfs1(1,1),dfs2(1);
    while(m--){
        int x,y;char ch;cin>>x>>y>>ch;
        arr sum=Check(x,y);
        if((ch=='H'&&sum.second!=0)||(ch=='G'&&sum.second!=sum.first))putchar('1');
        else putchar('0');
    }
    return 0;
}

Details

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

Test #1:

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

input:

920 900
HHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHGHHGHHHHHHHGGHGHHHGHHGHGHHHHHH...

output:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '001010011110011110101000100001...101010011101001110111011...

Test #2:

score: 0
Wrong Answer
time: 5ms
memory: 13072kb

input:

927 949
HHHHGHGGGHHHHGHGHHHHHGHGGHGGGHHHGGHHHHHHGGGGGGHHHGGHHHHGHHHHGGGHHHGHGHHHHGGGGHHGHHGGHGHGGGGG...

output:

1111011111111111111111111111111011111111111110111111111111111111111111111111111111110111101011111111...

result:

wrong answer 1st lines differ - expected: '111100001111011110110110011011...001100101101011111101111...

Test #3:

score: 0
Wrong Answer
time: 6ms
memory: 13072kb

input:

934 998
HHHHGHHHGHHGGGHGGHGHGHHHGHHGHGGGHHHHHGHHGGHHHHHHGHHHGGHHHHHGGHHHGHHHHHHHGHHGHGHGGHHGHGHHHGGH...

output:

1111111111111111111111011111111111111111111111011111111111111111111111011111101111111111111110111111...

result:

wrong answer 1st lines differ - expected: '110101011111101011010101111111...101110111001110010111110...

Test #4:

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

input:

941 947
HHHHHHHHHHHHHHHGHHHGHHHGHHHHGHHHGHHHHHHHHGHHHHHHHHHGHHHHHGHHHHHGHHGHHHHGHGGHHGHHHHHHHHHHGGHH...

output:

1111111111111111111111111111111111110111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '111111101101011000110101010111...010110001111011001100000...

Test #5:

score: 0
Wrong Answer
time: 273ms
memory: 19332kb

input:

92189 98896
HHHHHHHHHGHHHHGGGHGHHHHHHGHHHHHGHHHHHHHHHGHGHHHGHHHHHHGGHHHGHGGHHHHHHHHHGHHHHHHGHGHGHHHG...

output:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '111011111111111111111111111111...111111111111111111111111...

Test #6:

score: 0
Wrong Answer
time: 194ms
memory: 19572kb

input:

95803 95747
HHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHGHHGHGHHHHGHGHHHHHHGGHHHHHHHHHHHHGHHHGHHHHHHHHHGHGGHHHHH...

output:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '101101110111111111111111110111...111110110111111011111111...

Test #7:

score: 0
Wrong Answer
time: 176ms
memory: 19352kb

input:

92610 90996
HHGGGHHGHGGGHGHGHGGGGGGHGGGHGGHGHGHGGHHHHHGHGGHGHGGGGHGGGHGGHHGHHHGGHGHGGHGGGHGGGGGGGGGG...

output:

1111111111111111111011111111111111111110111111111111101111111111011111111111111101111111111111111111...

result:

wrong answer 1st lines differ - expected: '111111111111111111101111111111...111111001111111111111111...

Test #8:

score: 0
Wrong Answer
time: 214ms
memory: 19604kb

input:

96224 91494
HHHHHHHHGGHHGHHHHHHHHHHHHHGHHHGHHHHHHHHHHHHHHHHHGGHHHHHHGHHHHHHHHHHHHHHHHHGHGGGHGHGHHHHH...

output:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '111101011011110011111111111101...110101101111111111111110...

Test #9:

score: 0
Wrong Answer
time: 162ms
memory: 19384kb

input:

93031 96743
HHHHHHHHHGHHHHHHHHHHHHHHHHHGGHHHHGHHHGHHHHHHHHHGHHHHHHHHHHHHHHGGHHHHHGGHGHHHGHHHGHHHHHHG...

output:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '010001111110111101111111011100...111111110111001111110101...

Test #10:

score: 0
Wrong Answer
time: 211ms
memory: 19624kb

input:

96645 93594
HHHHHHHHHGHGHHHHHHHGHHHHGGGHHHHHHHHHHHHHHHHHHGHHHHHGHGHHHHHGHGHHHHHGHHHHGHHHHGGHHGHHHHGH...

output:

1111111111111110111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

result:

wrong answer 1st lines differ - expected: '010100011011111001111111111111...111001111111111111011001...