Submission #1338833

#TimeUsernameProblemLanguageResultExecution timeMemory
1338833rafsanamin2020Speedrun (RMI21_speedrun)C++20
8 / 100
59 ms468 KiB
#include "speedrun.h"
#include <bits/stdc++.h>

using namespace std;

// void assignHints(int subtask, int N, int A[], int B[])
// {
//   setHintLen(N);
//   for (int i = 1; i <= N - 1; i++)
//   {
//     setHint(A[i], B[i], true);
//     setHint(B[i], A[i], true);
//   }
// }

// void dfs(int x, int prev, int N, vector<bool> &visited)
// {
//   if (visited[x])
//     return;

//   visited[x] = true;

//   if (prev != 0)
//   {
//     goTo(x);
//   }

//   for (int i = 1; i <= N; i++)
//   {
//     bool adj = getHint(i);
//     if (adj)
//     {
//       dfs(i, x, N, visited);
//     }
//   }

//   if (prev != 0)
//   {
//     goTo(prev);
//   }
// }

void assignHints(int subtask, int N, int A[], int B[])
{
  setHintLen(20);

  vector<int> adj(N + 1, 0);

  for (int i = 1; i <= N - 1; i++)
  {
    adj[A[i]]++;
    adj[B[i]]++;
  }

  int mxidx = max_element(adj.begin(), adj.end()) - adj.begin();

  for (int i = 1; i <= N; i++)
  {
    for (int j = 0; j < 20; j++)
    {
      setHint(i, j + 1, (1 << j) & mxidx);
    }
  }
}

void dfs(int x, int prev, int N, vector<bool> &visited)
{
  if (visited[x])
    return;

  visited[x] = true;

  if (prev != 0)
  {
    goTo(x);
  }

  for (int i = 1; i <= N; i++)
  {
    dfs(i, x, N, visited);
  }

  if (prev != 0)
  {
    goTo(prev);
  }
}

void speedrun(int subtask, int N, int start)
{

  vector<bool> visited(N + 1, false);

  int root = 0;

  for (int j = 0; j < 20; j++)
  {
    if (getHint(j + 1))
    {
      root = root | (1 << j);
    }
  }

  if (start != root)
    goTo(root);

  for (int i = 1; i <= N; i++)
  {
    if (i != root && i != start)
    {
      goTo(i);
      goTo(root);
    }
  }
}
#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...