CF847A

· · 题解

题目上说要用双向链表,可以用手打链表的方法解决。

就是让这些链表头尾相接形成一个环,然后用数组模拟构造双向链表和将链表首尾相接的过程。

具体看代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int l[105],r[105],n,Next;
signed main(){
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i = 1;i <= n;i++){
        cin>>l[i]>>r[i];
    }    
    for(int i = 1;i <= n;i++){
        if(!l[i]){
            r[Next] = i;
            l[i] = Next;
            Next = i;
            while(r[Next]){
                Next = r[Next];
            }
        }
    }
    for(int i = 1;i<=n;i++){
        cout<<l[i]<<" "<<r[i]<<endl;
    }
    return 0;
}