CF874A 题解

· · 题解

原题目链接:Luogu & CodeForces

题目大意

给出一些双向链表,让你将这些链表连成一条。

我们只需要一个变量 nxt 标注后继,找到可连接的地方枚举 nxt 的位置。

AC Code:

#include <iostream>
#include <cstdio>
using namespace std;
int l[103],r[103];

int main(){
    int n;
    scanf("%d",&n);
    int nxt = 0; // 后继初始值为0
    for(int i = 1; i <= n; ++i)
        scanf("%d%d",&l[i],&r[i]); //input
    for(int i = 1; i <= n; ++i){
        if(l[i] == 0){ //找到
            r[nxt] = i;
            l[i] = nxt;
            nxt = i;
            while(r[nxt]){ // 寻找下一个nxt
                nxt = r[nxt];
            }
        }
    }
    for(int i = 1; i <= n; ++i)
        printf("%d %d\n",l[i],r[i]); //output
    return 0;
}

AC记录