CFCF2181C.Cacti Classification

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Ivan 和 Petr 喜欢玩仙人掌(一种特殊的图,每条边至多属于一个简单环,并且图是连通的)。允许多重边和自环。

他们发明了如下游戏:

  • Petr 秘密构造一个有 nn 个顶点和 mm 条边的仙人掌。边按照 11mm 编号。
  • Petr 只告诉 Ivan 边的数量 mm
  • 然后,Ivan 可以反复提如下类型的问题:
    • 他选择一个边的编号子集 SS(关于子集的限制见下文),并提问:“如果我们只保留编号在 SS 中的边(以及所有 nn 个顶点),结果图是连通的吗?”
    • Petr 必须回答“是”或“否”。

Ivan 最多只能提 8m8m 个问题,便必须判定每一条边:

  1. 这条边是否属于某个环;
  2. 如果属于,需要指出该简单环的长度。

本题中,每个自环看作长度为 11 的简单环,两个同一顶点对间的边组成长度为 22 的简单环。

然而,Ivan 年纪尚小,只认识 1414 以内的数。因此:

  • 如果某条边属于长度不超过 1414 的简单环,他必须输出准确的长度;
  • 如果环的长度超过 1414,则输出该边属于大环。

此外,为避免每次操作都需列出繁琐的边集,Ivan 的每个询问都要求如下:询问的边集需由之前某次询问的边集,或由全体边集,通过删去恰好一条边得到。

请设计一种策略,使 Ivan 能完成任务。

输入格式

每组测试包含多个测试用例。第一行包含测试用例数 tt1t1001 \le t \le 100)。每组测试用例描述如下。

每组测试用例首行为 mm1m1041 \le m \le 10^4),表示仙人掌的边数。

保证所有测试用例中 mm 的总和不超过 10410^4

输出格式

要发起一次询问,请按以下格式输出一行(不含引号):

  • "? pp ee"(0pq0 \le p \le q1em1 \le e \le m),其中:
    • pp 是之前某次询问的编号或 00(询问按发起顺序从 11 开始编号),
    • qq 是当前询问之前已发起的询问次数,
    • ee 是某条边的编号。

该询问表示:在第 pp 次询问所使用的边集基础上(若 p=0p=0 则使用全体边集),移除边 ee 后得到的图。交互器会在保留所有点的前提下,检查该图是否连通,并返回一个整数:

  • 若询问所表示的图是连通的,则返回 11
  • 若询问所表示的图是不连通的,则返回 00
  • 若你已超出最多 8m8m 次询问的限制,或边 ee 已在第 pp 次询问使用的边集中被移除,则返回 1-1。此时你应终止程序,得到「Wrong Answer」的评测结果。

2. 输出答案

当你找到答案后,请按以下格式输出一行:

  • "! e1e_1 e2e_2 \dots eme_m"(1ei14-1 \le e_i \le 14),

其中:

  • ei>0e_i > 0,第 ii 条边属于一个长度恰好为 eie_i 的简单环;
  • ei=0e_i = 0,第 ii 条边属于一个大环(长度大于 1414 的简单环);
  • ei=1e_i = -1,第 ii 条边不属于任何简单环。

交互器会返回一个整数:

  • 若你的答案正确,则返回 11。你应继续处理下一个测试用例,若这是最后一个用例则终止程序。
  • 若你的答案错误,则返回 1-1。此时你应终止程序,得到「Wrong Answer」的评测结果。

交互器不是自适应的,这意味着在你发起任何询问之前,图的结构就已经固定。

输入输出样例

  • 输入#1

    1
    7
    
    0
    
    1
    
    1
    
    1

    输出#1

    ? 0 1
    
    ? 0 3
    
    ? 2 4
    
    ! -1 3 1 3 2 3 2

说明/提示

在样例交互中,为对齐交互器响应与询问,输入输出中出现了空行。实际输入输出不会有这些空行。

样例中,图有 55 个顶点和 77 条边;编号 1177 的边分别为 (1,2)(1,2)(2,3)(2,3)(3,3)(3,3)(3,4)(3,4)(4,5)(4,5)(2,4)(2,4)(4,5)(4,5)

由 ChatGPT 5 翻译

首页