CF847A Union of Doubly Linked Lists 题解
题目传送门
题意
给你一些双向链表,让你把这些双向链表连起来。
思路
模拟即可,只需把上一条链表的尾巴和下一条链表的头连在一起,再把尾巴的值存下来就好了。链表实现其实可以用数组模拟。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=105;
int a[maxn],b[maxn];
int n,cnt;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
for(int i=1;i<=n;i++){
if(!a[i]){
b[cnt]=i,a[i]=cnt,cnt=i;
while(b[cnt]) cnt=b[cnt];
}
}
for(int i=1;i<=n;i++) printf("%d %d\n",a[i],b[i]);
return 0;
}