test/aoj/jag/functional_graph.test.cpp
✅
AC
· 最終更新 2026-10-23
· GitHub
問題: https://onlinejudge.u-aizu.ac.jp/problems/2970
依存するヘッダ(5)
実装
// competitive-verifier: PROBLEM https://onlinejudge.u-aizu.ac.jp/problems/2970
#include <iostream>
#include <vector>
#include "graph/functional_graph.hpp"
#include "number_theory/chinese_rem.hpp"
int main(void) {
int n;
std::cin >> n;
std::vector<int> p(n), q(n);
for (int &e : p) std::cin >> e, --e;
for (int &e : q) std::cin >> e, --e;
functional_graph fg(q);
std::vector<int> b(n), m(n);
for (int i = 0; i < n; ++i) {
b[i] = fg.dist(p[i], i);
if (b[i] == -1) {
std::cout << -1 << '\n';
return 0;
}
m[i] = fg.cycle_length(i);
}
auto [x, y] = chinese_rem(b, m);
std::cout << (y == -1 ? -1 : x) << '\n';
return 0;
}