码迷,mamicode.com
首页 > 其他好文 > 详细

P1160 队列安排

时间:2020-11-01 20:56:06      阅读:15      评论:0      收藏:0      [点我收藏+]

标签:nod   --   val   lang   ini   names   add   iostream   lse   

方法:双链表

#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 队列安排

标签:nod   --   val   lang   ini   names   add   iostream   lse   

原文地址:https://www.cnblogs.com/tomori/p/13848252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!