CE求助
查看原帖
CE求助
1493494
Janguiham0319楼主2025/1/17 11:19
#include<iostream>
using namespace std;
int queue[100001],cnt=0;
struct node{
    int l,r,num;//num
    int flag=1;
}p[100001];//position
p[0].r=1;
int flag,num=2;
void pushed(int k){//将num插入k的l/r
    if(flag==0) p[p[k].l].r=num,p[k].l=num;
    else p[p[k].r].l=num,p[k].r=num;
    num++;
}
int main(){
    int n,k,m,x;
    cin>>n;
    for(int i=1;i<n;i++){
        cin>>k>>flag;
        pushed(k);
    }
    int now=0,z=1;//z:指针,指向队列的站位
    for(int i=1;i<=n;i++){
        now=p[now].r;
        queue[z++]=now;
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>x;
        p[x].flag=0;
    }
    for(int i=1;i<=n;i++){
        if(p[queue[i]].flag) cout<<queue[i]<<' ';
    }
    return 0;
}#include<iostream>
using namespace std;
int queue[100001],cnt=0;
struct node{
    int l,r,num;//num
    int flag=1;
}p[100001];//position
p[0].r=1;
int flag,num=2;
void pushed(int k){//将num插入k的l/r
    if(flag==0) p[p[k].l].r=num,p[k].l=num;
    else p[p[k].r].l=num,p[k].r=num;
    num++;
}
int main(){
    int n,k,m,x;
    cin>>n;
    for(int i=1;i<n;i++){
        cin>>k>>flag;
        pushed(k);
    }
    int now=0,z=1;//z:指针,指向队列的站位
    for(int i=1;i<=n;i++){
        now=p[now].r;
        queue[z++]=now;
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>x;
        p[x].flag=0;
    }
    for(int i=1;i<=n;i++){
        if(p[queue[i]].flag) cout<<queue[i]<<' ';
    }
    return 0;
}
2025/1/17 11:19
加载中...