#include using namespace std; struct DataType { long long lv; int parent_id; char is_visited; }; long long dfs(vector& a, const int& id, map& mp) { if (a[id].is_visited == 1) return a[id].lv; if (mp[id] == 1) { // loop a[id].lv = -1; a[id].is_visited = 1; return -1; } mp[id] = 1; long long lv = dfs(a, a[id].parent_id, mp); if (lv == -1) a[id].lv = -1; a[id].lv = max(a[id].lv, lv); a[id].is_visited = 1; return a[id].lv; } int main() { ios::sync_with_stdio(false); cin.tie(0); int n, q; cin >> n; vector a(n); a[0].lv = 0; a[0].parent_id = -1; a[0].is_visited = 1; for (int i=1;i> lv >> id; --id; a[i].lv = lv; a[i].parent_id = id; a[i].is_visited = 0; } cin >> q; vector> query(q); for (int i=0;i> query[i].first >> query[i].second; map mp; for (int i=0;i skills; for (int i=0;i