Submission #1009240

#TimeUsernameProblemLanguageResultExecution timeMemory
1009240lrancicSpecial graph (IZhO13_specialg)C++17
0 / 100
282 ms604 KiB
#include <iostream>
#include <vector>
#include <unordered_set>

int path(std::vector<int> &vec) {
	int x, y, c = 0; std::cin >> x >> y;
	std::unordered_set<int> visited;

	while (x != y) {
		x = vec[x];

		if (visited.find(x) != visited.end() || x == -1) return -1;
		visited.insert(x);

		c++;
	}

	return c;
}

int main() {
	std::ios_base::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);

	int n; std::cin >> n;
	std::vector<int> vec(n+1); for (int i = 1; i <= n; i++) std::cin >> vec[i];

	int m; std::cin >> m;

	bool ok = (n <= 2e3) && (m <= 2e4);

	for (int i = 0; i < m; i++) {
		int act; std::cin >> act;

		if (act == 1) {
			int x; std::cin >> x;
			vec[x] = -1;
			continue;
		}

		if (ok)
		std::cout << path(vec) << '\n';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...