题解
2025-01-14 18:13:19
发布于:湖南
8阅读
0回复
0点赞
双向链表经典题型;简单!
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m;
struct T{
int l,r;//l为左指针 r为右指针
int d;//标记是否要删除
}t[N];
void add(int i,int k,int p){//添加
if(p1){// 右添加
t[k].r=t[i].r;
t[k].l=i;
t[i].r=k;
t[t[k].r].l=k;
}else{// 左添加
t[k].r=i;
t[k].l=t[i].l;
t[i].l=k;
t[t[k].l].r=k;
}
}
int main(){
int x,k,p;
cin>>n;
t[0].r=0,t[0].l=0;
add(0,1,1);
for (int i=2;i<=n;i++){
cin>>x>>p;
add(x,i,p);
}
cin>>m;
while(m--){
cin>>x;
t[x].d=1;//标记是否删除 1为是 0为不是
}
for (int i=t[0].r;i;i=t[i].r){
if(t[i].d0) cout<<i<<" ";
}
return 0;
}
全部评论 1
简单!!!
2025-01-15 来自 湖南
0
有帮助,赞一个