L2-002 链表去重

L2-002 链表去重

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int f[N],n,m,p[N],q[N];
struct LAN
{
    int z;
    int nz;
}lan[N];
int main()
{
    cin>>m>>n;
    for(int i=0;i<n;i++)
    {
        int x,y,z;
        scanf("%d %d %d",&x,&y,&z);
        lan[x].z=y;
        lan[x].nz=z;
    }
    int t=0,cnt=0,cnt1=0;
    while(m!=-1)
    {
        t=abs(lan[m].z);
        if(!f[t])
        {
            f[t]=1;
            q[cnt++]=m;
            m=lan[m].nz;
        }
        else
        {
            p[cnt1++]=m;
            m=lan[m].nz;
        }
    }
    for(int i=0;i<cnt;i++)
    {
        if(i!=cnt-1)
        printf("%05d %d %05d\n",q[i],lan[q[i]].z,q[i+1]);
        else 
        printf("%05d %d -1\n",q[i],lan[q[i]].z);
    }
    for(int i=0;i<cnt1;i++)
    {
        if(i!=cnt1-1)
        printf("%05d %d %05d\n",p[i],lan[p[i]].z,p[i+1]);
        else
        printf("%05d %d -1\n",p[i],lan[p[i]].z);
    }
    return 0;
}

 

posted @ 2023-02-02 17:53  椿の花少年  阅读(27)  评论(0)    收藏  举报