#include<bits/stdc++.h>
#include "speedrun.h"
using namespace std;
int n = 0,cnt = 0;
vector<int> vis;
void assignHints(int subtask, int N, int A[], int B[])
{
n = N;
if(subtask==1)
{
setHintLen(n);
for(int i=1;i<n;i++)
{
int u = A[i],v = B[i];
setHint(u,v,true);
setHint(v,u,true);
}
}
else
{
setHintLen(1);
int ata = 0;
vector<int> cnt(n+1,0);
for(int i=1;i<n;i++)
{
int u = A[i],v = B[i];
cnt[u]++;
cnt[v]++;
}
for(int i=1;i<=n;i++)
{
if(cnt[i]==n-1)
{
setHint(i,1,true);
}
}
}
//return;
}
void dfs(int s,int anne)
{
vis[s] = 1;
for(int x=1;x<=n;x++)
{
if(x!=anne && vis[x]== 0 && getHint(x))
{
vis[x] = 1;
goTo(x);
dfs(x,s);
goTo(s);
}
}
}
void speedrun(int subtask, int N, int start)
{
n = N;
vis.resize(n+1,0);
getLength();
if(subtask ==1)
{
dfs(start,0);
}
else
{
int bas =0;
vis[start] = 1;
if(getHint(1)==false)
{
bool yes = false;
for(int i=1;i<=n;i++)
{
if(i==start) continue;
yes = goTo(i);
if(yes)
{
bas = i;
vis[i] = 1;
break;
}
}
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
goTo(i);
goTo(bas);
}
}
}
}
//return;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |