40ptes 求调
  • 板块P1160 队列安排
  • 楼主z_y_w_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/13 20:04
  • 上次更新2024/7/13 21:06:26
查看原帖
40ptes 求调
1045286
z_y_w_楼主2024/7/13 20:04
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
struct node
{
    int id, nxt, prev;
}a[MAXN];
int n, m;
int head;
void out()
{
    for(int i=head; i; i=a[i].nxt)
    {
        cout<<a[i].id<<" ";
    }
    cout<<"\n";
}

int main()
{
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        a[i].id=i;
    }
    head=1;
    int prev=1, lst=1, nxt=1;
    a[1].id=1;
    for(int i=2; i<=n; i++)
    {
        int k, p;
        cin>>k>>p;
        if(p)
        {
            a[i].nxt=a[k].nxt, a[i].prev=k;
            a[a[k].nxt].prev=i, a[k].nxt=i;
            if(k==lst)
            {
                lst=i;
            }
        }
        else
        {
            a[i].prev=a[k].prev, a[i].nxt=k;
            a[a[k].prev].nxt=i, a[k].prev=i;
            if(k==head)
            {
                head=i;
            }
        }
    }
    a[lst].nxt=0;
    //out();
    cin>>m;

    for(int i=1; i<=m; i++)
    {
        int x;
        cin>>x;
        prev=a[x].prev;
        nxt=a[x].nxt;
        if(x==head)
        {
            head=a[x].nxt;
        }
        else
        {
            a[prev].nxt=nxt;
            a[nxt].prev=prev;
        }
    }
    for(int i=head; i; i=a[i].nxt)
    {
        cout<<a[i].id<<" ";
    }
}

2024/7/13 20:04
加载中...