답안 #970230

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
970230 2024-04-26T08:45:19 Z bachhoangxuan Speedrun (RMI21_speedrun) C++17
0 / 100
130 ms 1880 KB
#include "speedrun.h"
#include<bits/stdc++.h>
using namespace std;

const int maxn = 1005;
const int L = 20;
const int D = 1024;
int mask[maxn];
vector<int> edge[maxn];

void assignHints(int subtask, int N, int A[], int B[]) { /* your solution here */
    for(int i=1;i<N;i++){
        edge[A[i]].push_back(B[i]);
        edge[B[i]].push_back(A[i]);
    }
    function<void(int,int)> dfs = [&](int u,int p){
        int cc=0;
        for(int v:edge[u]){
            if(v==p) continue;
            dfs(v,u);
            if(cc) mask[cc]+=v*D;
            else mask[u]+=v;
            cc=v;
        }
        if(cc) mask[cc]+=p*D;
    };
    dfs(1,0);
    setHintLen(L);
    for(int i=1;i<=N;i++){
        for(int j=0;j<L;j++) setHint(i,j+1,mask[i]>>j&1);
    }
}

bool vis[maxn];

void speedrun(int subtask, int N, int start) { /* your solution here */
    int cnt=0;
    for(int i=1;i<=N;i++) mask[i]=0;
    function<void(int)> dfs = [&](int u){
        //cout << u << '\n';
        if(vis[u]) return;
        vis[u]=true;cnt++;
        for(int j=0;j<L;j++) mask[u]|=(getHint(j+1)<<j);
        int v=mask[u]%D;
        if(!v && u==start){
            for(int i=1;i<=N;i++) if(goTo(i)){
                dfs(i);goTo(v);
                break;
            }
        }
        while(v && cnt<N){
            if(!goTo(v)) break;
            dfs(v);goTo(u);
            v=mask[v]/D;
        }
    };
    dfs(start);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 105 ms 1880 KB Output is correct
2 Incorrect 108 ms 1128 KB Invalid node index to goTo
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 109 ms 1452 KB Output is correct
2 Incorrect 92 ms 1460 KB Invalid node index to goTo
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 106 ms 1616 KB Invalid node index to goTo
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 130 ms 1456 KB Invalid node index to goTo
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 106 ms 1316 KB Output is correct
2 Correct 125 ms 1196 KB Output is correct
3 Incorrect 107 ms 1200 KB Invalid node index to goTo
4 Halted 0 ms 0 KB -