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 队列安排的主要内容,如果未能解决你的问题,请参考以下文章