# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
841981 | vjudge1 | Speedrun (RMI21_speedrun) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
// #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
// #pragma GCC target ("avx2")
// #pragma GCC optimization ("O3")
// #pragma GCC optimization ("unroll-loops")
// #pragma optimization_level 3
// Defines
#define pb push_back // kak push_back 5
#define endl '\n'
#define FOR(i,start,end) for(int i = start;i < end;i ++)
#define REV(i,start,end) for(int i = start;i >= end;i --)
#define precal(x) fixed << setprecision(x)
#define F first
#define S second
#define sz(x) (ll)x.size()
#define all(x) (x).begin(),(x).end()
#define m_p make_pair
#define mt make_tuple
#define str to_string
// #ifndef ONLINE_JUDGE
// #define cerr if(false) cerr
// #endif
int k[1001][1001];
void assignHints(int subtask, int N, int A [], int B []){
if(subtask == 1){
setHintLen(N);
for(int i = 1;i <= N - 1;i ++){
k[A[i]][B[i]] = 1,k[B[i]][A[i]] = 1;
}
for(int i = 1;i <= N;i ++){
for(int j = 1;j <= N;j ++){
if(i == j) continue;
setHint(i,j,bool(k[i][j]));
}
}
}
return;
}
void speedrun(int subtask, int N, int start ){
if(subtask == 1){
bool used[N + 1],pr[N + 1];
used[start] = true,pr[start] = start;
int l = getLength(),pos = start,cnt = 1;
while(cnt != N){
used[pos] = true;
for(int i = 1;i <= N;i ++){
if(used[i] == true) continue;
bool f = getHint(i);
if(f == true){
pr[i] = pos;
bool k = goTo(i);
pos = i;
cnt ++;
break;
}
if(i == N){
goTo(pr[pos]);
pos = pr[pos];
}
}
}
}
return;
}