#include "speedrun.h"
#include "bits/stdc++.h"
using namespace std;
#define pb push_back
#define sz(a) (int)a.size()
/*
void setHintLen (int l){}
void setHint(int i, int j, bool b){}
int getLength(){}
bool getHint(int j){}
bool goTo(int x){}
*/
void dfsHint(int u, int par, vector<vector<int>>& adj, vector<int>& right_neighbor, vector<int>& parent, vector<int>& left_child){
parent[u] = par;
vector<int> nodes;
for(int v: adj[u]){
if(v == par)continue;
dfsHint(v, u, adj, right_neighbor, parent, left_child);
nodes.pb(v);
}
if(sz(nodes))left_child[u] = nodes[0];
for(int i = 0;i + 1 < sz(nodes); ++i){
right_neighbor[nodes[i]] = nodes[i + 1];
}
}
void assignHints(int subtask , int n, int a[], int b[]){
setHintLen(30);
vector<vector<int>> adj(n + 1);
for(int i = 1;i <= n - 1; ++i){
adj[a[i]].pb(b[i]);
adj[b[i]].pb(a[i]);
}
vector<int> right_neighbor(n + 1, 0), parent(n + 1, 0), left_child(n + 1, 0);
dfsHint(1, 0, adj, right_neighbor, parent, left_child);
for(int i = 1;i <= n; ++i){
int idx = 1;
for(int j = 9;j >= 0; --j){
if(parent[i] & (1 << j))setHint(i, idx, 1);
++idx;
}
for(int j = 9;j >= 0; --j){
if(left_child[i] & (1 << j))setHint(i, idx, 1);
++idx;
}
for(int j = 9;j >= 0; --j){
if(right_neighbor[i] & (1 << j))setHint(i, idx, 1);
++idx;
}
}
}
void dfs(int u, vector<bool>& vis){
int lc = 0, rn = 0, par = 0, idx = 1;
for(int j = 9;j >= 0; --j){
if(getHint(idx))par += (1 << j);
++idx;
}
for(int j = 9;j >= 0; --j){
if(getHint(idx))lc += (1 << j);
++idx;
}
for(int j = 9;j >= 0; --j){
if(getHint(idx))rn += (1 << j);
++idx;
}
vis[u] = true;
if(lc && !vis[lc]){
goTo(lc);
dfs(lc, vis);
}
if(par != 0 && rn){
goTo(par);
goTo(rn);
dfs(rn, vis);
}
if(par != 0){
goTo(par);
dfs(par, vis);
}
}
void speedrun(int subtask, int n, int start){
int l = getLength();
vector<bool> vis(n + 1, false);
dfs(start, vis);
}
/*
int main(){
}
*/
Compilation message
speedrun.cpp: In function 'void speedrun(int, int, int)':
speedrun.cpp:92:9: warning: unused variable 'l' [-Wunused-variable]
92 | int l = getLength();
| ^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
87 ms |
716 KB |
Output is correct |
2 |
Correct |
110 ms |
820 KB |
Output is correct |
3 |
Correct |
128 ms |
672 KB |
Output is correct |
4 |
Correct |
120 ms |
788 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
328 KB |
The length is too large |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
328 KB |
The length is too large |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
132 ms |
684 KB |
Output is correct |
2 |
Correct |
69 ms |
672 KB |
Output is correct |
3 |
Correct |
127 ms |
660 KB |
Output is correct |
4 |
Correct |
120 ms |
668 KB |
Output is correct |
5 |
Correct |
95 ms |
728 KB |
Output is correct |
6 |
Correct |
123 ms |
676 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
115 ms |
668 KB |
Partial solution |
2 |
Partially correct |
119 ms |
736 KB |
Partial solution |
3 |
Partially correct |
81 ms |
660 KB |
Partial solution |
4 |
Partially correct |
109 ms |
916 KB |
Partial solution |
5 |
Partially correct |
129 ms |
712 KB |
Partial solution |
6 |
Partially correct |
103 ms |
840 KB |
Partial solution |
7 |
Partially correct |
131 ms |
676 KB |
Partial solution |