提交时间:2025-01-08 15:38:04
运行 ID: 35892
#include<bits/stdc++.h> using namespace std; #define int long long int c[800300]; int n; struct edge{ int u,v,a,b; }; vector<int>g[400300]; edge E[400300]; bool vis[403000]; vector<int>S; inline void dfs(int u){ while(!g[u].empty()){ int i=g[u].back(); g[u].pop_back(); if(vis[i])continue; int v=E[i].u^E[i].v^u; dfs(v); S.push_back(i); } } signed main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); // freopen("gem4.in","r",stdin); // freopen("gem.out","w",stdout); cin>>n; for(int i=1;i<=4*n;i++){ cin>>c[i]; } for(int i=1;i<=2*n;i++){ E[i]={c[i],c[4*n-i+1],i,4*n-i+1}; g[c[i]].push_back(i); g[c[4*n-i+1]].push_back(i); } for(int i=1;i<=n;i++)dfs(i); for(int i=0;i<n;i++) cout<<E[S[2*i]].a<<" "<<E[S[2*i]].b<<" "; cout<<endl; return 0; }