就是模拟嘛~~~
直接上代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define sz(x) (int)x.size()
void solve() {
string t;int n;
cin>>t>>n;
map<string,pair<int,string>>a;
map<int,int>vis;
string x,z;int y;
for(int i=0;i<n;i++){
cin>>x>>y>>z;
a[x]={y,z};
}
vector<pair<string ,int>>liu;//被删除的
int f=0;
while(t!="-1"){
if(!vis[abs(a[t].first)]){
vis[abs(a[t].first)]=1;
if(f==0)cout<<t<<" "<<a[t].first<<" ",f=1;
else cout<<t<<endl<<t<<" "<<a[t].first<<" ";
t=a[t].second;
if(t=="-1")cout<<"-1"<<endl;
}else{
liu.push_back({t,a[t].first});
t=a[t].second;
if(t=="-1")cout<<"-1"<<endl;
}
}
f=0;
for(int i=0;i<liu.size();i++){
if(!f)cout<<liu[i].first<<" "<<liu[i].second<<" ",f=1;
else if(i!=liu.size()-1)cout<<liu[i].first<<endl<<liu[i].first<<" "<<liu[i].second<<" ";
else cout<<liu[i].first<<endl<<liu[i].first<<" "<<liu[i].second<<" "<<-1;
}
}
signed main() {
solve();
return 0;
}