题目
题解思路
看样例就可以知道,这是个环,我们可以任意指定起点,指定一个起点后,我们可以根据逻辑来推理出后面的一个人的编号,后面一个人的后面一定包含了后面人的另一个人。这样就可以线性推理出环了。
比赛的时候,真的想复杂了。
AC代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
const int INF = 0x3f3f3f3f;
struct node
{
int x,y;
}a[1000000];
bool vis[1000000];
int main ()
{
ios::sync_with_stdio(false);
int n;
cin>>n;
for (int i = 1 ; i <= n ; i++ )
{
int t1,t2;
cin>>t1>>t2;
a[i].x = t1;
a[i].y = t2;
}
cout<<1<<" ";
int cnt = 1;
int pit = 1;
vis[pit] = 1;
while( cnt < n )
{
int p1 = a[pit].x;
int p2 = a[pit].y;
if ( (a[p1].x == p2 || a[p1].y == p2) && vis[p1] == 0 )
{
cout<<p1<<" ";
pit = p1;
}else
{
cout<<p2<<" ";
pit = p2;
}
vis[pit] = 1;
cnt++;
}
cout<<"\n";
return 0 ;
}