CF847A题解

· · 题解

简要题意

话很多,其实只要看这一句就行了。

“你的任务是,给定若干个由如上方式表示的双向链表,链接这些双向链表使得其仅构成一个双向链表。注意:你只能通过链接两个双向链表的首尾单元来链接这两个双向链表。”

说白了,就是给你若干个双向链表,你只要将它们首尾相接后输出就行了。

思路

看懂题目后就简单了。让每一条链表的头连向上一个尾,再将尾更新。这里用数组模拟即可,不需要链表

代码

个人认为挺容易理解,不放注释了。码风丑陋,勿怪。

#include<bits/stdc++.h>
using namespace std;
int t[105],w[105],n,Next;
void print()
{
    for(int i=1;i<=n;i++)
        printf("%d %d\n",t[i],w[i]);
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&t[i],&w[i]);
    for(int i=1;i<=n;i++)
    {
        if(!t[i])
        {
            w[Next]=i;
            t[i]=Next;
            Next=i;
            while(w[Next])
            {
                Next=w[Next];
            }
        }
    }
    print();
    return 0;
}

记录

洛谷

CF