#include "books.h"
#include <bits/stdc++.h>
using namespace std;
#define sig signed
#define int long long
#define arr array
#define vec vector
const int N = 1e6 + 5;
int n, st;
arr<int, N> out;
arr<bool, N> vs;
vec<int> cyc;
void dfs(int u) {
vs[u] = true, cyc.push_back(u);
if (vs[out[u]]) return;
dfs(out[u]);
}
int cmp() {
int ans = 0, mx = -1;
for (int u = 1; u <= n; u++) {
if (vs[u]) continue;
mx = max(mx, u);
dfs(u);
for (int i = 0; i < cyc.size(); i++) {
int j = (i + 1) % cyc.size();
ans += abs(cyc[i] - cyc[j]);
}
cyc.clear();
// cout << u << ": " << ans << '\n';
}
assert(mx != -1);
ans += 2 * (mx - 1);
return ans;
}
int minimum_walk(vec<sig> _out, sig _st) {
n = _out.size(), st = _st + 1;
for (int i = 1; i <= n; i++) out[i] = _out[i - 1] + 1;
int ans = cmp();
return ans;
}
# | 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... |