P1160 队列安排

Posted tomori

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1160 队列安排相关的知识,希望对你有一定的参考价值。

方法:双链表

#include<iostream>
using namespace std;

const int N = 100010;

int e[N], l[N], r[N], idx;
int value_node[N];
int n;

void add(int x, int v){
    value_node[v] = idx;
    e[idx] = v, r[idx] = r[x], l[r[x]] = idx, l[idx] = x, r[x] = idx ++;
}

void del(int x){
    r[l[x]] = r[x];
    l[r[x]] = l[x];
}

void init(){
    r[0] = 1, l[1] = 0;
    idx = 2;
    
    add(0, 1);
}

int main(){
    init();
    
    cin >> n;
    
    for(int i = 2; i <= n; i ++){
        int k, p;
        
        cin >> k >> p;
        if(p == 1) add(value_node[k], i);
        else add(l[value_node[k]], i);
    }
    
    int m;
    cin >> m;
    
    while(m --){
        int x;
        cin >> x;
        
        if(value_node[x]){
            del(value_node[x]);
            value_node[x] = 0;
        }
    }
    
    for(int i = 0; r[i] != 1; i = r[i]) cout << e[r[i]] << ‘ ‘;
    
    return 0;
}

以上是关于P1160 队列安排的主要内容,如果未能解决你的问题,请参考以下文章

洛谷 P1160 队列安排

洛谷P1160 队列安排

[luogu p1160] 队列安排

P1160 队列安排

洛谷 P1160 队列安排 Label:链表 不会

解题报告:luogu P1160