Submission #313326

#TimeUsernameProblemLanguageResultExecution timeMemory
313326vitkishloh228Special graph (IZhO13_specialg)C++14
0 / 100
1093 ms1932 KiB
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
int main() {
	int n;
	cin >> n;
	vector<int> g(n);
	for (int i = 0; i < n; ++i) {
		int v1;
		cin >> v1;
		g[i] = v1 - 1;
	}
	int q;
	cin >> q;
	while (q--) {
		int ind;
		cin >> ind;
		if (ind == 1) {
			int a1;
			cin >> a1;
			a1--;
			g[a1] = -1;
		}
		else {
			int a, b;
			cin >> a >> b;
			--a, --b;
			queue<int> q;
			vector<int> d(n, 1e9);
			d[a] = 0;
			q.push(a);
			while (!q.empty()) {
				int v = q.front();
				q.pop();
				if (g[v] == -1) continue;
				if (d[g[v]] == 1e9) {
					d[g[v]] = d[v] + 1;
					q.push(g[v]);
				}
			}
			if (d[b] < 1e9) {
				cout << d[b] << '\n';
			}
			else cout << "-1\n";
		}
	}

}
#Verdict Execution timeMemoryGrader output
Fetching results...