Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35894 | liuyile | 【BJ】T1 | C++ | 通过 | 100 | 349 MS | 62164 KB | 958 | 2025-01-08 15:40:08 |
#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; vis[i]=1; 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("gem1.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; }