P12937 [NERC 2019] DevOps Best Practices

题目描述

**Daisy** 是 RainyDay 公司的一名高级软件工程师。她刚刚为产品实现了三个新功能:第一个功能使产品能够运行,第二个功能使产品运行得更快,第三个功能使产品运行得更正确。公司鼓励对新功能进行至少一些测试,因此 Daisy 指派她的实习生 **Demid** 为这些新功能编写测试用例。 有趣的是,这三个功能在 Demid 的开发服务器(编号为 1)上通过了所有测试,但在其他某些服务器上可能会测试失败。 Demid 完成任务后,Daisy 指派你将这三个功能部署到公司的所有 $n$ 台服务器上。对于每个功能 $f$ 和每台服务器 $s$,Daisy 会告诉你她是否希望将功能 $f$ 部署到服务器 $s$ 上。如果她希望部署,即使功能 $f$ 在服务器 $s$ 上测试失败也必须部署;如果她不希望部署,则不能部署。 公司有两种重要的部署工具:持续部署(CD)和持续测试(CT)。CD 可以在多对服务器之间建立有向图形式的连接,而 CT 可以配置在某些服务器上。 如果从服务器 $s_1$ 到服务器 $s_2$ 配置了 CD,那么每当 $s_1$ 接收到新功能 $f$ 时,系统会启动以下部署流程将 $f$ 部署到 $s_2$: 1. 如果功能 $f$ 已经部署在服务器 $s_2$ 上,则不进行任何操作。 2. 否则,如果服务器 $s_1$ 未配置 CT,则 $s_1$ 会直接将功能 $f$ 部署到 $s_2$,不进行测试。 3. 否则,服务器 $s_1$ 会对功能 $f$ 运行测试。如果测试失败,则不进行任何操作;如果测试通过,则将功能 $f$ 部署到 $s_2$。 你需要配置 CD/CT 系统,之后 Demid 会将所有三个功能部署到他的开发服务器上。你的 CD/CT 系统必须确保每个功能仅被部署到 Daisy 指定的服务器集合。 由于公司计算资源有限,你最多只能建立 $264$ 条 CD 连接。

输入格式

第一行包含一个整数 $n$($2 \le n \le 256$)——公司服务器的数量。 接下来的 $n$ 行,每行包含三个整数。第 $i$ 行的第 $j$ 个整数为 $1$ 表示 Daisy 希望将第 $j$ 个功能部署到第 $i$ 台服务器,否则为 $0$。 再接下来的 $n$ 行,每行包含三个整数。第 $i$ 行的第 $j$ 个整数为 $1$ 表示第 $j$ 个功能在第 $i$ 台服务器上测试通过,否则为 $0$。 Demid 的开发服务器编号为 $1$。数据保证 Daisy 希望将所有三个功能部署到服务器 1,且所有三个功能在服务器 1 上测试通过。

输出格式

如果无法在最多建立 $264$ 条 CD 连接的情况下配置 CD/CT 系统,则输出一行 `Impossible`。 否则,输出的第一行应为 `Possible`。 第二行应包含 $n$ 个用空格分隔的整数——CT 的配置。第 $i$ 个整数为 $1$ 表示你在第 $i$ 台服务器上设置了 CT,否则为 $0$。 第三行应包含一个整数 $m$($0 \le m \le 264$)——你设置的 CD 连接数量。 接下来的 $m$ 行,每行描述一条 CD 连接,包含两个整数 $s_i$ 和 $t_i$($1 \le s_i, t_i \le n$;$s_i \ne t_i$),表示从服务器 $s_i$ 到服务器 $t_i$ 建立了自动部署通道。

说明/提示

第一个样例测试的 CD/CT 系统配置如下图所示。 ![](https://cdn.luogu.com.cn/upload/image_hosting/stnjo553.png) 翻译由 DeepSeek V3 完成