传送门

题意:

  有 n 个孩子编号为 1~n ,绕着圣诞树 dance;

  编号为 i 的孩子可以记住ai1,ai2两个小孩,ai1,ai2是 i 在顺时针方向的相邻的两个小孩,但ai1,ai2不一定是按顺时针方向排列的;

  给出每个孩子相邻两个孩子的信息,让你还原这个序列。

题解:

  可以以任一孩子作为第一个孩子,假设以编号 1 为第一个,编号1有两个相邻的孩子信息 a,b

  如果 b 在 a 的顺时针方向,那么第二个孩子就是 a,反之为 b。

  确定了前两个孩子后

  i 从 1 开始遍历,第 i 个孩子的两个相邻的孩子a,b已经确定一个在 i+1 位置了,那么剩下的那个肯定在 i+2 位置,遍历到 n-2 却id确定最终序列。

AC代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=2e5+; int n;
struct Node
{
int a,b;//i的顺时针方向相邻的两个孩子
Node(int _a=,int _b=):a(_a),b(_b){}
}nex[maxn];
bool vis[maxn];
int q[maxn]; void Solve()
{
mem(vis,false); q[]=;
int x=nex[].a,y=nex[].b;
q[]=(nex[x].a == y || nex[x].b == y ? x:y);//确定第二个位置的孩子的编号
vis[q[]]=true,vis[q[]]=true;
for(int i=;i <= n-;++i)
{
x=nex[q[i]].a;
y=nex[q[i]].b;
q[i+]=(!vis[x] ? x:y);
vis[q[i+]]=true;
}
for(int i=;i <= n;++i)
printf("%d ",q[i]);
}
int main()
{
scanf("%d",&n);
for(int i=;i <= n;++i)
{
int a,b;
scanf("%d%d",&a,&b);
nex[i]=Node(a,b);
}
Solve();
return ;
}

根据大神代码改编的简介代码%%%%%

 #include<iostream>
#include<cstdio>
using namespace std;
const int maxn=2e5+; int n;
int a[maxn];
int b[maxn];
bool vis[maxn]; int Find(int nex1,int nex2)
{
return !vis[nex1] && (a[nex1] == nex2 || b[nex1] == nex2) ? :;
}
void Solve()
{
int x=;
for(int i=;i <= n;++i)
{
printf("%d ",x);
vis[x]=true;
int nex[]={a[x],b[x]};
x=nex[Find(nex[],nex[])];
}
}
int main()
{
scanf("%d",&n);
for(int i=;i <= n;++i)
scanf("%d%d",a+i,b+i);
Solve();
return ;
}

改编自大神代码

 

最新文章

  1. ASP.NET列表信息以Excel形式导出
  2. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7
  3. [转]安装SharePoint 2013时安装AppFabric失败(错误码:1603)
  4. vagrant 基本配置
  5. Hard Drive Inspector Pro 4.26.208(硬盘检测工具)简体中文特别版
  6. Hadoop 面试题之Hbase
  7. jsp_设置文件编码
  8. Hark的数据结构与算法练习之Bogo排序
  9. 【转】Android 最火的快速开发框架XUtils
  10. Windowsport80解决方案被占用
  11. 小议 - 来自《XX时代XX公司》的笔试编程题目
  12. 敏捷测试(4)--基于story的敏捷基础知识
  13. Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)
  14. python机器学习-sklearn挖掘乳腺癌细胞(三)
  15. python第三天,字符串续
  16. macbook air 2012 mid 安装 windows10 双系统遇到错误 no bootable device insert boot disk and press any key
  17. 证明最大公约数Stein算法(高精度算法)
  18. Spring 测试
  19. 什么是wsgi,uwsgi,uWSGI
  20. [UE4]Tool Tip - 提示信息

热门文章

  1. JS检测是否是360浏览器
  2. case when 空值判断
  3. nginx反向代理(动静分离)
  4. Windows 7 quick launch
  5. Maven问题:Failure to transfer org.apache.maven
  6. Spring Boot 构建电商基础秒杀项目 (四) getotp 页面
  7. Android 修改 Menu字体颜色
  8. [洛谷P4147] 玉蟾宫
  9. 使用tree命令导出文件夹/文件的目录树
  10. jsp配置