题目链接
题目大意:
中文的 不写了
解题思路:
模拟题
代码如下:
#include<iostream>
#include<map>
using namespace std;
const int maxn=1e5+10;
int b[maxn];
int c[maxn];
map<int,int> mp;
struct node
{
int x;
int next;
}a[maxn];
int main()
{
int x,i,j,k;
int y;
int n;
int head;
cin>>head>>n;
for(i=1;i<=n;i++)
{
cin>>x;
cin>>a[x].x;
cin>>a[x].next;
}
j=0;
k=0;
for(i=head;i!=-1;i=a[i].next)
{
y=abs(a[i].x);
if(mp[y])
{
j++;
b[j]=i;
}
else
{
mp[y]=1;
k++;
c[k]=i;
}
}
for(i=1;i<=k;i++)
{
if(i!=k)
printf("%05d %d %05d\n",c[i],a[c[i]].x,c[i+1]);
else
printf("%05d %d -1\n",c[k],a[c[k]].x);
}
for(i=1;i<=j;i++)
{
if(i!=j)
printf("%05d %d %05d\n",b[i],a[b[i]].x,b[i+1]);
else
printf("%05d %d -1\n",b[j],a[b[j]].x);
}
return 0;
}