QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#882944#8331. Bot Brothersucup-team5077#WA 58ms13752kbC++143.5kb2025-02-05 13:47:332025-02-05 13:47:34

Judging History

This is the latest submission verdict.

  • [2025-02-05 13:47:34]
  • Judged
  • Verdict: WA
  • Time: 58ms
  • Memory: 13752kb
  • [2025-02-05 13:47:33]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int128 __int128
const int N=1e5+5;
ll n,supd[N],m,fa[N],dep[N ],vis[N ],id[N],deg[N],rk[N],rem[N];
vector<int> g[N];
void dfs0(int u){
    for(auto v:g[u]){
        if(v == fa[u])continue;
        //if(id[v]==-1)continue;
        fa[v]=u;
        dfs0(v);
    }
}
void dfs(int u){
    rem[u]=1;
    if(id[u])return;
    for(auto v:g[u]){
        if(v == fa[u])continue;
        //if(id[v]==-1)continue;
        fa[v]=u;
        dep[v]=dep[u]+1;
        //printf("v=%d,dep[%d]=%lld\n",v,v,dep[v]);
        dfs(v);
    }
}

vector<ll> d[N ];
/*void dfs2(int u){
    for(auto v:g[u]){
        if(v == fa[u])continue;
        dfs2(v);
        
    }
}*/

void solve(){
    scanf("%lld%lld",&n,&m);
    for(int i=1;i<=n;i++){
        g[i].clear();
        d[i].clear();
        vis[i]=0;
        id[i]=0;
        rem[i]=0;
        supd[i]=0;
        dep[i]=0;
        rk[i]=0;
    }
    for(int i=1;i<=m;i++){
        supd[i]=i+1;
        id[i]=i;
        rk[i]=i;
    }
    for(int i=1;i<n;i++){
        int u,v;
        scanf("%d%d",&u,&v );
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs0(n);
    vector<int> d1;
    for(int i=1;i<=n;i++){
        deg[i]=g[i].size();
        if(g[i].size()==1)d1.push_back(i);
    }
    while(!d1.empty()){
        int u = d1.back();
        d1.pop_back();
        if(g[fa[u ]].size() != 2 || fa[u]==n)continue;
        id[fa[u]]=id[u];
        rk[id[u]]=fa[u];
        //id[u]=-1;
        deg[fa[u]]--;
        if(deg[fa[u ]]==1){
            d1.push_back(fa[u]);
        }
    }
    /*for(int i=1;i<=n;i++){
        printf("id[%d]=%lld\n",i,id[i]);
    }
    for(int i=1;i<=m;i++){
        printf("rk[%d]=%lld\n",i,rk[i]);
    }*/
    dep[n ]=0;
    dfs(n );
    vector<int> to_op;
    ll mxdep=0;
    for(int i=1;i<=n;i++){
        //printf("dep[%d]=%lld,rem[%d]=%lld\n",i,dep[i],i,rem[i]);
        if(!rem[i])continue;
        mxdep = max(mxdep,dep[i]);
        
    }
    for(int i=1;i<=n;i++){
        if(!rem[i])continue;
        if(dep[i]==mxdep){
            to_op.push_back(i);
            supd[i]=rk[(i)%m+1];
        }
        else{
            if(id[i]){
                //d[dep[i]].push_back(i);
                //printf("leaf not equal\n");
                printf("Tie\n");
                return;
            }
        }
    }
    while(mxdep--){
        //for(int i=1;i<=n;i++){
            //printf("supd[%d]=%lld\n",i,supd[i]);
        //}
        vector<int> nxt;
        for(auto u:to_op ){
            if(supd[u] != -1)supd [u] = fa[supd[u]];
            if(!vis[fa[u ]]){
                nxt.push_back(fa[u ]);
                vis[fa[u]]=1;
            }
        }
        for(auto u:nxt){
            for(auto v:g[u]){
                if(v == fa[u])continue;
                if(!supd[u])supd[u]=supd[v];
                else{
                    if(supd[v]==-1)supd[u]=-1;
                    else if(supd[v] != supd[u]){
                        supd[u]=-1;
                    }
                }
                
                
            }
        }
        to_op.clear();
        for(auto u:nxt){
            to_op.push_back(u);
        }
        
    }
    //for(int i=1;i<=n;i++){
    //        printf("supd[%d]=%lld\n",i,supd[i]);
    //    }
    if(supd[n ] == n){
        printf("Doddle\n");
    }
    else{
        printf("Tie\n");
    }
}
int main(){
    int T;
    cin >> T;
    while(T--)solve();
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 13588kb

input:

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

output:

Tie
Doddle

result:

ok 2 tokens

Test #2:

score: -100
Wrong Answer
time: 58ms
memory: 13752kb

input:

51362
10 3
1 6
2 4
3 5
4 10
5 10
6 7
7 8
8 9
9 10
10 5
1 6
2 8
3 6
4 6
5 7
6 7
7 9
8 10
9 10
10 4
1 6
2 5
3 7
4 7
5 9
6 7
7 8
8 10
9 10
10 5
1 6
2 7
3 8
4 10
5 6
6 9
7 8
8 10
9 10
10 4
1 5
2 7
3 10
4 6
5 6
6 8
7 9
8 10
9 10
10 5
1 6
2 8
3 8
4 8
5 6
6 7
7 9
8 9
9 10
10 4
1 5
2 6
3 7
4 10
5 6
6 8
7 9
...

output:

Doddle
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Doddle
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Doddle
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie
Tie...

result:

wrong answer 97th words differ - expected: 'Tie', found: 'Doddle'