有个很坑的地方,直接看代码吧
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define sz(x) (int)x.size()
//2025.3.18
map<string,pair<string,string>>arr;
void solve(){
string head;cin>>head;
int n;cin>>n;
string a,b,c;
for(int i=0;i<n;i++){
cin>>a>>b>>c;
arr[a]={b,c};
}
vector<string>ans;
while(head!="-1"){
ans.push_back(head);
head=arr[head].second;
}
n=sz(ans);//这里要重新置n,因为给的链表会在中途遇到-1,挺坑的吧
int l=0,r=n-1;
int f=0;
while(l<=r){
if(f) cout<<ans[r]<<"\n";//第一次不输出两次,只需要输出一次
cout<<ans[r]<<" "<<arr[ans[r]].first<<" ";//输出右边
f=1;r--;
if(l>r)break;
cout<<ans[l]<<"\n"<<ans[l]<<" "<<arr[ans[l]].first<<" ";//输出左边
l++;
}
cout<<-1;//补上-1
}
signed main()
{
solve();
return 0;
}