用数组模拟链表,为什么最后一个点过不了呢,是WA
  • 板块P1160 队列安排
  • 楼主Elle
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/10/21 14:46
  • 上次更新2023/11/5 10:14:59
查看原帖
用数组模拟链表,为什么最后一个点过不了呢,是WA
355674
Elle楼主2020/10/21 14:46
#include<iostream>
using namespace std;
struct srt{

    int pre;
    int here;
    int next;
};
srt list[100010];
int main(){

    int n;
    cin >> n;
    list[1].here = 1;
    list[1].pre = 0;
    list[1].next = 2;
    int y = 1;
    for(int i = 2;i <= n;i++){

        int x,turn;
        cin >> x >> turn; 
        list[i].here = i;
        if(turn == 0){// i x
            list[i].pre = list[x].pre;
            list[list[x].pre].next = i;
            list[i].next = x;
            list[x].pre = i;
            if(x == y) y = i;
        }
        else{//  x i
            list[list[x].next].pre = i;
            list[i].next = list[x].next;
            list[i].pre = x;
            list[x].next = i;
        }
    }
    int m;
    cin >> m;
    for(int i = 0;i < m;i++){
        int x;
        cin >> x;
        if(list[x].here){//a x b
            list[x].here = 0;
            n--;
            list[list[x].pre].next = list[x].next;
            list[list[x].next].pre = list[x].pre;
            if(x == y) y = list[x].next;
        }
    }
  while(n > 0){
      cout << list[y].here <<' ';
      y = list[list[y].here].next;
      n--;
  }
  return 0;
}
2020/10/21 14:46
加载中...