还是只会模拟
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=100001;
struct Node{
int address;
int key;
int next;
}node[N];
int main()
{
cin.tie(0);
int start,n;
int x,k,y;
cin>>start>>n;
for(int i=0;i<n;i++)
{
cin>>x>>k>>y;
node[x].address=x;
node[x].key=k;
node[x].next=y;
}
int j=0;
int flag;
int i=start;
for(i;j<n-1;j++)
{
if(abs(node[i].key)!=abs(node[node[i].next].key))
printf("%05d %d %05d\n",node[i].address,node[i].key,node[i].next);
else
{
// cout<<endl;
Node x=node[node[node[i].next].next];
printf("%05d %d %05d\n",node[i].address,node[i].key,x.address);
printf("%05d %d %d\n",x.address,x.key,-1);
j++;
printf("%05d %d %05d\n",node[i].next,node[i].key,x.next);
j++;
i=x.next;
continue;
}
i=node[i].next;
}
printf("%05d %d %d\n",node[i].address,node[i].key,node[i].next);
return 0;
}