复习 队列安排 链表

来源:互联网 发布:ubuntu samba图形 编辑:程序博客网 时间:2024/05/16 09:03
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
int p[maxn],nxt[maxn],vis[maxn];
int main(){
    int n;
    scanf("%d",&n);
    int k,pp;
    p[1]=0; nxt[0]=1;
    for(int i=2;i<=n;i++){
        scanf("%d%d",&k,&pp);
        if(pp==0){
            nxt[p[k]]=i;
            p[i]=p[k]; nxt[i]=k; p[k]=i;
        }
        else{
            p[nxt[k]]=i;
            nxt[i]=nxt[k];
            p[i]=k;
            nxt[k]=i;
        }
    }
    int m,x;
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%d",&x);
        if(vis[x]) continue;
        vis[x]=true;
        nxt[p[x]]=nxt[x]; p[nxt[x]]=p[x];
    }
    for(int i=nxt[0];i;i=nxt[i]){
        cout<<i<<' ';
    }
    cout<<endl;
    return 0;
}
原创粉丝点击