l2002

· · 个人记录

#include<bits/stdc++.h>
using namespace std;
const int N =1e5+5;
struct node{
    int ind,val,nxt;
}e[N];
vector<node> v1,v2;
unordered_map<int,int> mp;
unordered_map<int,int> mp2;
int st,n,cnt;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    cout.fill('0');
    cin>>st>>n;
    for(int i=1;i<=n;i++){
        int ind,val,nxt;
        cin>>ind>>val>>nxt;
        e[++cnt]={ind,val,nxt};
        mp[ind]=cnt;
        if(!mp2.count(val)) {
            mp2[val]=ind;
            mp2[-val]=ind;
        }
    }
    int it=st;
    cout<<it<<'\n';
    for(int i=1;i<=n;i++){
        if(mp2[e[mp[it]].val]==e[mp[it]].ind) v1.push_back(e[mp[it]]);
        else v2.push_back(e[mp[it]]);
        it=e[mp[it]].nxt;
    }
    for(int i=0;i<v1.size()-1;i++){
        cout.width(5);
        cout<<v1[i].ind<<' '<<v1[i].val<<' ';
        cout.width(5);
        cout<<v1[i+1].ind<<'\n';
    }
    cout.width(5);
    if(v1.size()) cout<<v1[v1.size()-1].ind<<' '<<v1[v1.size()-1].val<<" -1\n";
    for(int i=0;i<v2.size()-1;i++){
        cout.width(5);
        cout<<v2[i].ind<<' '<<v2[i].val<<' ';
        cout.width(5);
        cout<<v2[i+1].ind<<'\n';
    }
    cout.width(5);
    if(v2.size()) cout<<v2[v2.size()-1].ind<<' '<<v2[v2.size()-1].val<<" -1\n";
    return 0;
}