#P12937. [NERC 2019] DevOps Best Practices

[NERC 2019] DevOps Best Practices

Description

Daisy 是 RainyDay 公司的一名高级软件工程师。她刚刚为产品实现了三个新功能:第一个功能使产品能够运行,第二个功能使产品运行得更快,第三个功能使产品运行得更正确。公司鼓励对新功能进行至少一些测试,因此 Daisy 指派她的实习生 Demid 为这些新功能编写测试用例。

有趣的是,这三个功能在 Demid 的开发服务器(编号为 1)上通过了所有测试,但在其他某些服务器上可能会测试失败。

Demid 完成任务后,Daisy 指派你将这三个功能部署到公司的所有 nn 台服务器上。对于每个功能 ff 和每台服务器 ss,Daisy 会告诉你她是否希望将功能 ff 部署到服务器 ss 上。如果她希望部署,即使功能 ff 在服务器 ss 上测试失败也必须部署;如果她不希望部署,则不能部署。

公司有两种重要的部署工具:持续部署(CD)和持续测试(CT)。CD 可以在多对服务器之间建立有向图形式的连接,而 CT 可以配置在某些服务器上。

如果从服务器 s1s_1 到服务器 s2s_2 配置了 CD,那么每当 s1s_1 接收到新功能 ff 时,系统会启动以下部署流程将 ff 部署到 s2s_2

  1. 如果功能 ff 已经部署在服务器 s2s_2 上,则不进行任何操作。
  2. 否则,如果服务器 s1s_1 未配置 CT,则 s1s_1 会直接将功能 ff 部署到 s2s_2,不进行测试。
  3. 否则,服务器 s1s_1 会对功能 ff 运行测试。如果测试失败,则不进行任何操作;如果测试通过,则将功能 ff 部署到 s2s_2

你需要配置 CD/CT 系统,之后 Demid 会将所有三个功能部署到他的开发服务器上。你的 CD/CT 系统必须确保每个功能仅被部署到 Daisy 指定的服务器集合。

由于公司计算资源有限,你最多只能建立 264264 条 CD 连接。

Input Format

第一行包含一个整数 nn2n2562 \le n \le 256)——公司服务器的数量。

接下来的 nn 行,每行包含三个整数。第 ii 行的第 jj 个整数为 11 表示 Daisy 希望将第 jj 个功能部署到第 ii 台服务器,否则为 00

再接下来的 nn 行,每行包含三个整数。第 ii 行的第 jj 个整数为 11 表示第 jj 个功能在第 ii 台服务器上测试通过,否则为 00

Demid 的开发服务器编号为 11。数据保证 Daisy 希望将所有三个功能部署到服务器 1,且所有三个功能在服务器 1 上测试通过。

Output Format

如果无法在最多建立 264264 条 CD 连接的情况下配置 CD/CT 系统,则输出一行 Impossible

否则,输出的第一行应为 Possible

第二行应包含 nn 个用空格分隔的整数——CT 的配置。第 ii 个整数为 11 表示你在第 ii 台服务器上设置了 CT,否则为 00

第三行应包含一个整数 mm0m2640 \le m \le 264)——你设置的 CD 连接数量。

接下来的 mm 行,每行描述一条 CD 连接,包含两个整数 sis_itit_i1si,tin1 \le s_i, t_i \le nsitis_i \ne t_i),表示从服务器 sis_i 到服务器 tit_i 建立了自动部署通道。

3
1 1 1
1 0 1
1 1 1
1 1 1
0 0 0
1 0 1
Possible
1 1 1
2
3 2
1 3
2
1 1 1
0 0 1
1 1 1
1 1 0
Impossible

Hint

第一个样例测试的 CD/CT 系统配置如下图所示。

翻译由 DeepSeek V3 完成