rt,关键在于这题的加强版P6166我都过了。
有没有好心人帮我看看qwq
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
const int N=1e5+5;
int n,tot,cnt,q;
int r[N],v[N];
char c[N],ans[N];
vector<int> g[N];
vector<pii> f[N];
string a;
void dfs(int x){
a.push_back(c[x]);
for(int i=0;i<g[x].size();i++){
int y=g[x][i];
dfs(y);
}
for(int i=0;i<f[x].size();i++){
pii y=f[x][i];
ans[y.second]=a[y.first];
}
a.pop_back();
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
char opt[5];
scanf("%s",opt);
if(opt[0]=='T'){
char x[5];
scanf("%s",x);
r[++tot]=++cnt;
c[cnt]=x[0];
g[r[tot-1]].push_back(r[tot]);
}else if(opt[0]=='Q'){
int p;
scanf("%d",&p);
f[r[tot]].push_back({p,++q});
}else{
int u;
scanf("%d",&u);
tot++;
r[tot]=r[tot-u-1];
}
}
a=' ';
dfs(1);
for(int i=1;i<=q;i++)printf("%c\n",ans[i]);
return 0;
}