代码
#include <iostream>
#include <cstdio>
using namespace std;
long a[100002];
string nxt[100002];
int main()
{
string faddr;
string h,p1,p2;
string f,ff;
string addr;
long data;
long n;
string next;
int k;
cin>>faddr>>n>>k;
for(long i=0;i<n;i++){
cin>>addr>>data>>next;
a[stoi(addr)]=data;
nxt[stoi(addr)]=next;
if(next=="-1"){
f=addr;
ff=addr;
}
}
h="100001";
nxt[stoi(h)]=faddr;
p1=h;
p2=faddr;
string tmp;
string tmp2=h;
while(true){
if(a[stoi(p2)]<0){
if(p2==faddr&&p2!=ff){
p1=nxt[stoi(p1)];
p2=nxt[stoi(p2)];
}
else{
nxt[stoi(p1)]=nxt[stoi(p2)];
nxt[stoi(p2)]=nxt[stoi(tmp2)];
nxt[stoi(tmp2)]=p2;
tmp2=p2;
if(p2!=ff){
p2=nxt[stoi(p1)];
}
else{
break;
}
}
}
else if(a[stoi(p2)]>k){//***
nxt[stoi(p1)]=nxt[stoi(p2)];
tmp=p2;
nxt[stoi(f)]=tmp;
nxt[stoi(tmp)]="-1";
f=tmp;
if(p2!=ff){
p2=nxt[stoi(p1)];
}
else{
break;
}
}
else{
if(p2!=ff){
p1=nxt[stoi(p1)];
p2=nxt[stoi(p2)];
}
else{
break;
}
}
}
tmp=nxt[stoi(h)];
while(true){
cout<<tmp<<" "<<a[stoi(tmp)]<<" "<<nxt[stoi(tmp)]<<endl;
if(nxt[stoi(tmp)]!="-1"){
tmp=nxt[stoi(tmp)];
}
else{
break;
}
}
return 0;
}