#include <bits/stdc++.h>
bool visit[320];
std::set<int> cache[320];
void solve(int N, int L);
int query(int v, int k);
void answer(int x, int y);
int Ng;
void join(std::set<int>& a,std::set<int> b){
for(auto v:b)a.insert(v);
}
std::set<int> dfs(int current,int parent){
cache[current].insert(parent);
if(visit[current])return cache[current];
else visit[current]=true;
int test = query(current,1);
std::cout << test << '\n';
std::set<int> child;
child.insert(current);
if(test==parent){
join(cache[current],child);
return child;
}
int t = 2;
while(test<current&&test!=parent&&child.find(test)==child.end()&&t<Ng){
join(child,dfs(test,current));
// std::cout << parent << "->" << current << '|';
// std::cout << current << ' ' << test << '|';
// for(auto cc:child)std::cout << cc << ' ';
// std::cout << '\n';
answer(current,test);
test = query(current,t++);
}
join(cache[current],child);
return child;
}
void solve(int N, int L) {
Ng=N;
for (int i=N;i>=1;i--) {
dfs(i,i);
}
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |