总结一下:我们可以看一下这题目就是给小朋友排队,随意删除啊,增添,这明显是一道链表的模板的题目咳咳,很简单。
就正常在俩个数之间差一个数,俩个数之间删除一个数,改变几条方向,删完之后的左右边可以设为一个取不到的很大数字。
// 对列安排.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
#define INF 0x3333333
struct people {
int right, left;
}a[100005];
int main()
{
int n;
cin >> n;
for (int i = 2;i <= n;i++)
{
int people;int dir;
cin >> people >> dir;
if (dir == 0)//增添到要求数字左边,改变该数字与其左边数字的指向。
{
a[a[people].left].right = i;
a[i].right = people;
a[i].left