#L2089. 「ZJOI2016」随机树生成器

    ID: 5033 传统题 3000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>概率论随机化数论概率与期望树结构生成树

「ZJOI2016」随机树生成器

题目描述

小 Y 有一个随机数生成器,她想用它生成包含 nn 个节点的树(树是一种无环的无向连通图)。她研究了四种随机树生成方法:

  1. 方法一:首先生成一个 11nn 的全排列 p1,p2,,pnp_1, p_2, \dots, p_n。接着对于每个节点 ii2in2 \leq i \leq n),从 pip_ipjp_j 连一条边,其中 jj11i1i-1 中的随机整数。

  2. 方法二:首先生成一个 11nn 的全排列 p1,p2,,pnp_1, p_2, \dots, p_n。接着对于每个节点 ii2in2 \leq i \leq n),从 pip_ipjp_j 连一条边,其中 jji2\lfloor \frac{i}{2} \rfloori1i-1 中的随机整数。

  3. 方法三:初始时有一个 nn 个点的图,没有边。然后等概率随机生成点对 (u,v)(u, v),如果 uuvv 在当前图中不连通,则将边 (u,v)(u, v) 加入图中。重复此过程直到图连通。

  4. 方法四:在所有 nn 个点的不同有标号树中,等概率随机选取一棵树。两棵树不同当且仅当存在一条边 (u,v)(u, v) 只出现在其中一棵树中。

小 Y 用这四种方法生成了很多棵 n=1000n = 1000 个节点的树,但忘记了每棵树是用哪种方法生成的。你的任务是帮助她识别每棵树的生成方法。


输入格式

  • 第一行包含一个正整数 TT,表示测试数据组数。
  • 接下来一个正整数 mm,表示有 mm 棵树。
  • 对于每棵树,输入 n1n-1 行,每行包含两个正整数 u,vu, v,表示树中的一条边。

输出格式

输出共 mm 行,每行一个 1144 之间的整数,表示该树的生成方法。


数据范围与提示

  • n=1000n = 1000
  • 各测试点的 mm 和生成方式出现情况如下:
测试点 mm 约定
1 20002000 只出现第 1、2 种方式
2 30003000 只出现第 1、2、3 种方式
3 只出现第 1、3、4 种方式
4 40004000
5

每个测试点中,每种可能出现的生成方式恰好出现 10001000 次。


评分方式

每个测试点有 1010 个评分参数 a10,a9,,a1a_{10}, a_9, \dots, a_1。若你的输出中错误个数为 xx,则得分 2s2s,其中 ss 是满足 xasx \leq a_s 的最大整数。如果 x>a1x > a_1,得 00 分。 如果输出格式有异常你将同样获得 00 分,请确保你的输出中共有 mm 行,每行为一个 1144 之间的正整数。 对于每个测试点的具体评分参数见附加文件中的 scores。