题意:有n个数1-n,输入n组数,每组两个数代表这两个数顺序都是在第i个数后面的,但是这两个数之间的位置不确定,让你将n个数构成的环输出。
#include<bits/stdc++.h>
using namespace std;
struct node {
int n1,n2;
}a[1000000];
int vis[1000000];
int solve(int cnt){
int num=a[cnt].n1,numk=a[cnt].n2;
if((a[num].n1==numk||a[num].n2==numk)&&!vis[num]){
return num;
}
return numk;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].n1>>a[i].n2;
}
int cnt=1;
for(int i=1;i<n;i++){
cout<<cnt<<" ";
vis[cnt]=1;
cnt=solve(cnt);
if(i==n-1){
cout<<cnt<<endl;
}
}
}