Description
题目链接:Codeforces 1131D
美食家 Apple 先生是一家美食杂志的主编。他会用一个正整数来评价每一道菜。
美食家在第一天品尝第 $n$ 道菜,第二天品尝了 $m$ 道菜。他制作了一张 $n\times m$ 的表格,记录了他对菜肴的评价。如果第一套中的第 $i$ 道菜比第二套中的第 $j$ 道菜好,那么 $a_{i,j}$ 等于 >
;如果要差,那么 $a_{i,j}$ 等于 <
。菜肴可能同样美味,那么 $a_{i,j}$ 等于 =
。
现在 Apple 先生想让你帮他评价每道菜。由于他是非常严格的,他会对菜肴进行评估,以便使用的最大整数尽可能小。但是 Apple 先生也很公平,如果 $a_{i,j}$ 为 <
,那么给第一套中第 $i$ 道菜的评价一定小于第二套中第 $j$ 道菜。如果 $a_{i,j}$ 是 >
那么应该要更大。如果 $a_{i,j}$ 为 =
,那么这两个数字要相等。
帮助 Apple 先生评价这两套中的每一道菜,使之符合他的感受,并满足最大数字尽可能小。如果有解则输出 Yes
和评价的数字;否则输出 No
。
数据范围:$1\le n,m\le 10^3$。
Solution
首先我们把 =
给处理掉,把所有相等的点缩在一起。如果同一个并查集中的点有 <
或 >
关系显然无解。
此时我们得到了一个有向图,直接对它拓扑排序,如果有环则无解,否则输出方案。
时间复杂度:$O(nm)$
Code
1 |
|