#P12965. [GCJ Farewell Round #4] Ring-Preserving Networks

    ID: 12792 远端评测题 30000ms 2048MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2023交互题Special JudgeGoogle Code Jam

[GCJ Farewell Round #4] Ring-Preserving Networks

Description

一个研究联盟正在建设一个新的数据中心。在数据中心中,一组计算机通过网络相互连接和通信。该网络仅通过计算机之间的直接双向链路工作。在他们成功开发了名称保持网络后,决定开发其他具有保证特性的设计。

该联盟要求你提交一种环保持网络的设计方案。我们将网络的定义为网络中所有计算机的一个排列顺序,使得排列中任意两个相邻计算机之间存在直接链路,且排列的首尾计算机之间也存在直接链路。

环保持网络是一种网络设计方案,即使在丢失原始计算机标识后,仍能高效找到自身的环。你需要提交多个满足环保持特性的网络设计。

为了评估你的网络设计,研究联盟设置了一个自动化程序。你需要根据指定的计算机数量 C\mathbf{C} 和双向链路数量 L\mathbf{L} 提交网络设计。你必须为每台计算机分配一个 1 到 C\mathbf{C} 之间的唯一 ID,并用这些 ID 列出 L\mathbf{L} 条链路。评估程序会接收该设计,并返回一个经过以下修改的网络设计副本:

  • 唯一 ID 被均匀随机排列(即每个新 ID 可能出现在任意计算机上),
  • 每条链路按新 ID 从小到大排列,
  • 链路集合按第一个端点的升序排列(使用新 ID),若第一个端点相同则按第二个端点的升序排列(即字典序)。

你需要能够从修改后的网络中找到至少一个环。这个环不需要是原始环。

交互协议

这是一个交互式问题。请确保你已阅读我们 FAQ 中关于交互式问题的部分。

最初,你的程序应读取一个整数 T\mathbf{T},表示测试用例的数量。然后,需要处理 T\mathbf{T} 个测试用例。

对于每个测试用例,你的程序首先读取一行包含两个整数 C\mathbf{C}L\mathbf{L},分别表示网络设计中的计算机数量和链路数量。

然后,你需要创建一个包含 C\mathbf{C} 台计算机和 L\mathbf{L} 条链路的网络设计,并打印恰好 L\mathbf{L} 行表示该设计。每行包含两个不同的整数 A\mathrm{A}B\mathrm{B},表示计算机 A\mathrm{A}B\mathrm{B} 之间的一条链路(ABA \neq B)。注意,如果你列出了链路 AB\mathrm{A} \mathrm{B},就不能再列出 AB\mathrm{A} \mathrm{B}BA\mathrm{B} \mathrm{A}

在读取你的网络设计后,评测系统会返回 L\mathbf{L} 行表示经过排列的设计。第 ii 行包含两个整数 Ui\mathbf{U}_{\mathbf{i}}Vi\mathbf{V}_{\mathbf{i}},表示新 ID 为 Ui\mathbf{U}_{\mathbf{i}}Vi\mathbf{V}_{\mathbf{i}} 的计算机之间的双向链路。该副本使用从所有可能排列中均匀随机选择的排列生成,且与其他选择独立。

要完成一个测试用例,你需要向评测系统发送一行包含 C\mathbf{C} 个整数 x1,x2,,xCx_{1}, x_{2}, \ldots, x_{\mathbf{C}},表示排列后设计中的一个环。即,评测系统返回的链路集合中必须包含 x1xCx_{1} x_{\mathbf{C}}xCx1x_{\mathbf{C}} x_{1},并且对于所有 ii,必须包含 xixi+1x_{i} x_{i+1}xi+1xix_{i+1} x_{i}

在处理完所有测试用例后,你不应再向评测系统发送任何信息。换句话说,如果在打印最后一个测试用例的环列表后,你的程序继续向标准输出打印内容,将被判为错误答案。

如果在任何时候评测系统从你的程序中读取到格式错误的输入(令牌数量错误、非整数令牌或超出范围的数字),它将立即停止并判定为错误答案。然而,如果你的程序在等待评测系统的输入时超时,可能会被判为超出时间限制。另一方面,如果你犯了一个可恢复的错误(发送的网络中包含重复连接、自环连接,或发送的环中重复使用计算机或使用了排列后版本中不存在的边),评测系统会继续与你的程序通信以完成测试,但最终判定仍为错误答案。

请注意,你可以在不同的测试用例中提交相同的网络设计,只要该设计同时满足所有限制条件。此外,评测系统中的随机生成种子是固定的,因此以相同顺序提交相同的原始网络设计集将获得相同的副本集。

Input Format

参见交互协议。

Output Format

参见交互协议。

2
4 5





1 2
1 3
1 4
2 4
3 4

4 4




1 2
1 3
2 4
3 4


1 2
1 3
4 2
4 3
1 4





1 2 4 2

1 2
1 4
3 2
3 4




2 1 3 4

Hint

样例解释

第一组样例是错误的,第二组样例是正确的,因此最后的评判为 Wrong Answer。

限制

  • 1T1001 \leq \mathbf{T} \leq 100
  • 3C100003 \leq \mathbf{C} \leq 10000
  • $\mathbf{C} \leq \mathbf{L} \leq \mathbf{C} \times (\mathbf{C} - 1) / 2$。
  • 对于所有 ii,$1 \leq \mathbf{U}_{\mathbf{i}} < \mathbf{V}_{\mathbf{i}} \leq \mathbf{C}$。
  • 对于所有 ii,$\mathbf{U}_{\mathbf{i}} \leq \mathbf{U}_{\mathbf{i+1}}$。
  • 如果 $\mathbf{U}_{\mathbf{i}} = \mathbf{U}_{\mathbf{i+1}}$,则对于所有 ii,$\mathbf{V}_{\mathbf{i}} \leq \mathbf{V}_{\mathbf{i+1}}$。
  • 存在长度为 C\mathbf{C} 的排列 ff 和长度为 L\mathbf{L} 的排列 gg,使得对于每个 ii,如果 A BA \ B 是你的原始设计中的第 g(i)g(i) 行,则 $\{\mathbf{U}_{\mathbf{i}}, \mathbf{V}_{\mathbf{i}}\} = \{f(A), f(B)\}$。(给定的链路是通过对计算机 ID 进行排列并对链路按字典序排序后得到的)。

测试集 1(5 分,可见评测结果)

  • LC+10\mathbf{L} \leq \mathbf{C} + 10

测试集 2(17 分,隐藏评测结果)

  • L20000\mathbf{L} \leq 20000

翻译由 DeepSeek V3 完成