Submission #1233955

#TimeUsernameProblemLanguageResultExecution timeMemory
1233955HanksburgerSpeedrun (RMI21_speedrun)C++20
100 / 100
55 ms512 KiB
#include "speedrun.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> adj[1005], vec;
int par[1005];
void dfs(int u)
{
    vec.push_back(u);
    for (int v:adj[u])
    {
        if (v==par[u])
            continue;
        par[v]=u;
        dfs(v);
    }
}
void assignHints(int subtask, int n, int a[], int b[])
{
    setHintLen(20);
    for (int i=1; i<n; i++)
    {
        adj[a[i]].push_back(b[i]);
        adj[b[i]].push_back(a[i]);
    }
    dfs(1);
    for (int i=0; i<vec.size(); i++)
    {
        for (int j=1; j<=10; j++)
            setHint(vec[i], j, par[vec[i]]&(1<<(j-1)));
        if (i+1<vec.size())
            for (int j=11; j<=20; j++)
                setHint(vec[i], j, vec[i+1]&(1<<(j-11)));
    }
}
void speedrun(int subtask, int n, int cur)
{
    while (cur!=1)
    {
        cur=0;
        for (int i=1; i<=10; i++)
            if (getHint(i))
                cur|=1<<(i-1);
        goTo(cur);
    }
    for (int i=1; i<n; i++)
    {
        int nxt=0;
        for (int j=11; j<=20; j++)
            if (getHint(j))
                nxt|=1<<(j-11);
        while (!goTo(nxt))
        {
            cur=0;
            for (int j=1; j<=10; j++)
                if (getHint(j))
                    cur|=1<<(j-1);
            goTo(cur);
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...