51nod2151队列复原求解答

课堂练习:队列复原 未完成
小瓜现在让1到n这n个整数排成一列,但是他只告诉你每个整数的后面那个数是什么(最后一个整数的后面那个数是0),请你帮忙复原这个队列。

输入格式
第一行一个整数n(n<=100000),表示有n个整数。 接下来n行,每行两个数i,j,表示排在整数i后面的那个数是j。
输出格式
n行,每行一个整数,表示完整的队列。
输入样例
4
1 3
2 4
3 2
4 0
输出样例
1
3
2
4

#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include <algorithm>
#include <stdlib.h>
#include <cstdio>
#include <set>
#define ll long long
using namespace std;
ll ans[100000];ll array[100000];
int main()
{
    ll n,m,t,x;
    cin>>t;x=t;
    while(t--)
    {
        cin>>n>>m;
        ans[m]=n;
    }ll k=x-1;ll j=0;
    for(ll i=1;i<=x;i++)
    {
 
       array[k]=ans[j];
        j=array[k];
        k--;
    }
    for(ll i=0;i<x;i++)
    {
        cout<<array[i]<<endl;
    }
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632