// Problem: F - Ш
// Contest: Virtual Judge - 2024-03-04
// URL: https://vjudge.net/contest/698802#problem/F
// 
// By Muaath Alqarni
// Blog: https://muaath.dev/blog
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int, int>
using namespace std;
const int N = 2e5+1, LG = 19;
int n, m, q, a[N];
vector<int> adj[N];
int dep[N], st[N][LG];
void dfs(int node=1, int par=1) {
	st[node][0] = par;
	dep[node] = dep[par]+1;
	for (int ch : adj[node])
		if (ch ^ par)
			dfs(ch, node);
}
void build_lca() {
	dfs();
	for (int j = 1; j < LG; j++)
		for (int i = 1; i <= n; i++)
			st[i][j] = st[st[i][j-1]][j-1];
}
int jmp(int x, int k) {
	for (int i = 0; i < LG; i++)
		if (k>>i&1)
			x = st[x][i];
	return x;
}
int lca(int u, int v) {
	if (dep[u] < dep[v]) swap(u, v);
	u = jmp(u, dep[u]-dep[v]);
	if (u == v) return u;
	for (int i = LG-1; i >= 0; i--)
		if (st[u][i] != st[v][i])
			u = st[u][i], v = st[v][i];
	return st[u][0];
}
set<int> rng1[N];
set<int> rng2[N];
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin >> n >> m >> q;
	for (int i = 0; i < n-1; i++) {
		int u, v;
		cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);	
	}
	build_lca();
	for (int i = 1; i <= m; cin >> a[i++]);
	
	for (int i = 1; i <= m; i++) {
		rng1[a[i]].insert(i);
	}
	for (int i = 1; i < m; i++) {
		rng2[lca(a[i], a[i+1])].insert(i);
	}
	while (q--) {
		int t;
		cin >> t;
		if (t == 1) {
			
			int p, v;
			cin >> p >> v;
			rng1[a[p]].erase(p);
			rng2[lca(a[p], a[p+1])].erase(p);
			rng2[lca(a[p-1], a[p])].erase(p-1);
			a[p] = v;
			rng1[a[p]].insert(p);
			rng2[lca(a[p], a[p+1])].insert(p);
			rng2[lca(a[p-1], a[p])].insert(p-1);
		} else {
			int l, r, v;
			cin >> l >> r >> v;
			auto it1 = rng1[v].lower_bound(l);
			if (it1 != rng1[v].end() && *it1 <= r) {
				cout << *it1 << ' ' << *it1 << '\n';
				continue;	
			}
			auto it2 = rng2[v].lower_bound(l);
			if (it2 != rng2[v].end() && *it2 < r) {
				cout << *it2 << ' ' << *it2 + 1 << '\n';
				continue;	
			}
			
			cout << "-1 -1\n";
		}
	}
}
| # | 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... |