现在我获得了一份报错:
terminate called after throwing an instance of '__gnu_pbds::join_error'
what(): __gnu_pbds::container_error
Aborted (core dumped)
代码如下:
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
const int N=1e5+5;
struct node{
int fa,p,ans;
vector<int> ch;
tree<int,null_type,greater<int>,rb_tree_tag,tree_order_statistics_node_update> chcnt;
};
int n;
node tr[N];
void s(int p){
for(int i=0;i<tr[p].ch.size();++i) s(tr[p].ch[i]);
for(int i=0;i<tr[p].ch.size();++i) tr[p].chcnt.join(tr[tr[p].ch[i]].chcnt);
tr[p].ans=tr[p].chcnt.order_of_key(tr[p].p);
cerr << p << ' ' << tr[p].ans << endl;
tr[p].chcnt.insert(tr[p].p);
}
int main(){
cin >> n;
for(int i=1;i<=n;++i) cin >> tr[i].p;
for(int i=2;i<=n;++i) cin >> tr[i].fa,tr[tr[i].fa].ch.push_back(i);
cerr << endl;
s(1);
for(int i=1;i<=n;++i) cout << tr[i].ans << '\n';
return 0;
}
求问为什么会有这样的报错阿qwq