#include<bits/stdc++.h>
using namespace std;
#define rg register
#define inf 0x3f3f3f3f
#define ll long long
inline int read(){
rg int ret=0,f=0;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=1;ch=getchar();}
while(isdigit(ch)){ret=ret*10+ch-48;ch=getchar();}
return f?-ret:ret;
}
int n,u,dep[5005],siz[5005],sontree[5005][5005],son[5005];
int fa[5005];
bool vis[5005];
void dfs(int x){
if(!siz[x]) return;
int tmp=sontree[x][rand()%siz[x]+1],cnt=0;
random_shuffle(sontree[x]+1,sontree[x]+siz[x]+1);
for(rg int i=1;i<=siz[x];++i){
if(dep[sontree[x][i]]!=dep[x]+1) continue;
if(tmp==sontree[x][i]) u=0;
else printf("? 1 %d %d\n",sontree[x][i],tmp),fflush(stdout),u=read();
if(u==dep[tmp]-dep[sontree[x][i]]){
son[x]=sontree[x][i];
break;
}
}//找到重儿子。
memset(vis,0,sizeof(vis));
for(rg int i=1;i<=siz[x];++i){
if(dep[sontree[x][i]]==dep[x]+1&&sontree[x][i]!=son[x]){
printf("? 2 %d\n",sontree[x][i]); fflush(stdout);
siz[sontree[x][i]]=read()-1;
int cntnow=0;
for(rg int j=1;j<=siz[sontree[x][i]]+1;++j){
u=read(); vis[u]=1;
if(u!=sontree[x][i]) sontree[sontree[x][i]][++cntnow]=u;
}
}
}//询问轻儿子的子树
for(rg int i=1;i<=siz[x];++i){
if(!vis[sontree[x][i]]&&sontree[x][i]!=son[x])
sontree[son[x]][++siz[son[x]]]=sontree[x][i];
}//根据轻儿子的子树推出重儿子的子树。
for(rg int i=1;i<=siz[x];++i){
if(dep[sontree[x][i]]==dep[x]+1){
fa[sontree[x][i]]=x;
dfs(sontree[x][i]);
}
}//递归处理。
}
signed main(){
n=read();
for(rg int i=2;i<=n;++i){
printf("? 1 1 %d\n",i); fflush(stdout);
dep[i]=read(); sontree[1][++siz[1]]=i;
} //处理深度。
dfs(1);
printf("! ");
for(rg int i=2;i<=n;++i) printf("%d ",fa[i]);
puts("");
fflush(stdout);
return 0;
}

P7597 「EZEC-8」猜树 加强版的更多相关文章

  1. 「WC 2019」数树

    「WC 2019」数树 一道涨姿势的EGF好题,官方题解我并没有完全看懂,尝试用指数型生成函数和组合意义的角度推了一波.考场上只得了 44 分也暴露了我在数数的一些基本套路上的不足,后面的 \(\ex ...

  2. [Luogu 3701] 「伪模板」主席树

    [Luogu 3701] 「伪模板」主席树 这是一道网络流,不是主席树,不是什么数据结构,而是网络流. 题目背景及描述都非常的暴力,以至于 Capella 在做此题的过程中不禁感到生命流逝. S 向 ...

  3. 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)

    [题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...

  4. P3701 「伪模板」主席树

    题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...

  5. 「 hihoCoder 1014 」Trie 树

    标题真直接 题目大意 给你 $n$ 个字符串.存到一个字典中.又给你 $m$ 个询问,每个询问给一个字符串,在字典中查出有多少个字符串是以这个字符串为前缀. 解题思路 模板题啊 在每个点设置一个变量 ...

  6. [Luogu] P3701 「伪模板」主席树

    题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...

  7. 【luoguP3701】「伪模板」主席树

    description byx和诗乃酱都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 很快,这棵树就开花结果了.byx和诗乃 ...

  8. Solution -「51nod 1868」彩色树

    \(\mathcal{Description}\)   Link & 双倍经验 Link.   给定一棵 \(n\) 个结点的树,每个结点有一种颜色.记 \(g(u,v)\) 表示 \(u\) ...

  9. LuoguP3701 「伪模板」主席树

    题面 这个题很有意思啊... 其实是道最大流板子题,只连byx会赢的边,S向byx连,另一个连T... 注意有长者时连的边加上同方mogician的个数... 还要注意mogician可以无限续命,也 ...

随机推荐

  1. Blazor+Dapr+K8s微服务之服务调用

    1.1         Dapr环境配置 1.1.1        在开发机安装Docker Desktop并启用Kubernetes 安装过程略,安装好后效果如下:(左下角两个绿色指示Docker和 ...

  2. ACL的配置

    一.实验拓扑 实验要求: 二.实验编址 三.实验步骤: 1.启动设备(全选) 2.配置端口IP R1: R2: R3: R4: 2.搭建OSPF网络: R1: R2: R3: R4: 4.配置ACL控 ...

  3. 003 TCP/IP协议详解(一)

    TCP/IP TCP/IP 意味着 TCP 和 IP 在一起协同工作. TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信. IP 负责计算机之间的通信. TCP 负责将数据分割并装入 IP ...

  4. SIM900A—发送、接收中英文短信

    文章目录 一.SMS简介 二.短信的控制模式与编码 1.Text Mode 2.PDU Mode 3.GSM编码 4.UCS2编码 三.收发英文短信 1.AT+CPMS查询短信数量 2.AT+CNMI ...

  5. SQL 练习17

    查询各科成绩最高分.最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 , 及格为>=60,中等为:70-80,优良为:80-9 ...

  6. WinForm嵌入Web网页的解决方案

    企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...

  7. SpringCloud升级之路2020.0.x版-22.Spring Cloud LoadBalancer核心源码

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 经过上一节的详细分 ...

  8. C#设计模式---PipeLine

    一.概述 顾名思义,管道模式就像一条管道把多个对象连接起来,整体看起来就像若干个阀门嵌套在管道中,而处理逻辑就放在阀门上,如下图,需要处理的对象进入管道后,分别经过阀门一.阀门二.阀门三.阀门四,每个 ...

  9. Semaphore 的使用思路

    转自:https://www.cnblogs.com/klbc/p/9500947.html 最近在看一本书<Java并发编程 核心方法与框架>,打算一边学习一边把学习的经验记下来,所粘贴 ...

  10. vue-bluJavascript - Vue - 插件(swiper、vue-preview)

    swiper swiper是一个支持滑动效果的js插件,它也支持在vue中使用,主要用于移动端的触摸滑动操作.Swiper中文网. 安装和导入插件 npm i vue-awesome-swiper - ...