#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(), x.end()
#define sort(x) sort(all(x))
#define uniq(x) unique(all(x))
#define count(s, c) count(all(s), c)
constexpr int MAXN = 1e5;
template<typename _Tp>
ostream& operator << (ostream& o, vector<_Tp>& v){
for(_Tp& x : v)
o << x+1 << ' ';
return o;
}
int p[MAXN], c[MAXN];
vector<int> ans;
vector<int> parentChildGraph[MAXN];
void DFS(int node){
bool ok=c[node];
for(int i: parentChildGraph[node]){
ok &= c[i];
DFS(i);
}
if(ok) ans.emplace_back(node);
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int tt=1;
#ifdef MULTITEST
cin >> tt;
#endif
while(tt--){
int n;
cin >> n;
int root;
for(int i=0; i<n; ++i){
cin >> p[i] >> c[i];
--p[i];
if(p[i]==-2)
root=i;
else
parentChildGraph[p[i]].emplace_back(i);
}
DFS(root);
if(ans.empty())
cout << -1;
else{
sort(ans);
cout << ans;
}
if(tt) cout << endl;
}
return 0;
}
1605B - Reverse Sort | 1607C - Minimum Extraction |
1604B - XOR Specia-LIS-t | 1606B - Update Files |
1598B - Groups | 1602B - Divine Array |
1594B - Special Numbers | 1614A - Divan and a Store |
2085. Count Common Words With One Occurrence | 2089. Find Target Indices After Sorting Array |
2090. K Radius Subarray Averages | 2091. Removing Minimum and Maximum From Array |
6. Zigzag Conversion | 1612B - Special Permutation |
1481. Least Number of Unique Integers after K Removals | 1035. Uncrossed Lines |
328. Odd Even Linked List | 1219. Path with Maximum Gold |
1268. Search Suggestions System | 841. Keys and Rooms |
152. Maximum Product Subarray | 337. House Robber III |
869. Reordered Power of 2 | 1593C - Save More Mice |
1217. Minimum Cost to Move Chips to The Same Position | 347. Top K Frequent Elements |
1503. Last Moment Before All Ants Fall Out of a Plank | 430. Flatten a Multilevel Doubly Linked List |
1290. Convert Binary Number in a Linked List to Integer | 1525. Number of Good Ways to Split a String |