CF1267D DevOps Best Practices
题目描述
Daisy 是 RainyDay, LLC 的一名高级软件工程师。她刚刚在产品中实现了三个新功能:第一个功能使产品能够正常运行,第二个功能提升了产品的速度,第三个功能确保产品的正确性。公司希望对新功能进行一定的测试,因此 Daisy 指派实习生 Demid 为这些功能编写测试案例。
有趣的是,这三个功能在 Demid 的开发服务器(编号为 1)上通过了所有测试,但可能会在其他服务器上失败。
完成开发后,Daisy 让你负责将这三个新功能部署到公司所有 $n$ 台服务器上。每个功能 $f$ 和每台服务器 $s$,Daisy 都告诉你是否需要将功能 $f$ 部署到服务器 $s$ 上。如果 Daisy 希望部署,则无论功能 $f$ 在服务器 $s$ 上是否通过测试都必须进行部署。如果她不需要部署,你就不能在该服务器上执行部署。
你的公司有两种重要工具来实现新功能的部署:持续部署(CD)和持续测试(CT)。CD 可以在几对服务器之间建立连接,形成一个有向图。CT 可以在某些服务器上进行设置。
如果服务器 $s_1$ 对服务器 $s_2$ 进行了 CD 配置,那么每当 $s_1$ 接收到一个新功能 $f$ 时,系统将启动以下部署过程:
- 如果功能 $f$ 已部署在服务器 $s_2$ 上,则无需操作。
- 否则,如果服务器 $s_1$ 上未设置 CT,则直接将功能 $f$ 从服务器 $s_1$ 部署到服务器 $s_2$,无需进行测试。
- 否则,服务器 $s_1$ 将运行功能 $f$ 的测试。如果测试失败,不做任何操作。如果测试通过,则将功能 $f$ 部署到服务器 $s_2$。
你需要配置 CD/CT 系统,然后 Demid 在其开发服务器上部署所有三个功能。你的配置必须确保每个功能精准地部署到 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 上部署,并且所有功能在此服务器上都能通过测试。
输出格式
如果无法在 264 对服务器之间建立 CD 连接来满足要求,请输出 "Impossible"。否则:
- 第一行输出 "Possible"。
- 第二行输出 $n$ 个用空格分隔的数字,表示每台服务器的 CT 配置。第 $i$ 个数字为 1 表示在第 $i$ 台服务器上配置了 CT,为 0 表示未配置。
- 第三行输出一个整数 $m$($0 \le m \le 264$),表示你设置的 CD 对数。
- 接下来的 $m$ 行,每行包含两个整数 $s_i$ 和 $t_i$($1 \le s_i, t_i \le n$;$s_i \ne t_i$),表示自动部署从服务器 $s_i$ 到服务器 $t_i$。
**本翻译由 AI 自动生成**
说明/提示
CD/CT system for the first sample test is shown below.
