题解CF847A
题目|链接
题目大意
给出一些双向链表,其中有一些链表已经连接在了一起。现在把这些链表连成一条,求原来每条链表现在的前驱后继。
题目分析
对于链表前驱后继的记录,可以使用 pair 数组。<pair(数据类型),(数据类型)> 相当于一个结构体,如下:
struct pair{
(数据类型) first,second;
};
而其中的 first 为第一个元素,second 为第二个元素。
其余模拟即可,只需要每次找出一个无前驱的链表接在现在链表的末尾即可。
参考程序
#include<bits/stdc++.h>
using namespace std;
int n,q;
pair<int,int>a[105];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d%d",&a[i].first,&a[i].second);
for(int i=1;i<=n;i++)
if(!a[i].first)
{
a[q].second=i;
a[i].first=q;
q=i;
while(a[q].second)q=a[q].second;
}
for(int i=1;i<=n;i++)printf("%d %d\n",a[i].first,a[i].second);
return 0;
}
感谢你的阅读!