#HX1257G. 列表排序

提交0 通过0
通过率0%
时间限制1000ms
内存限制128MiB
    ID: 10098 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 普及- 上传者: 标签>编程题C++CSPCSP复赛CSP复赛专项练习暑假CSP复赛集训暑假集训1257-T2满分强化

题目描述

题目描述

给定一个 nnmm 列的整数列表。

列表中每一行的 mm 个整数都是一个 1m1\sim m 的排列。

现在,你可以对该列表执行以下两种操作:

  • 选择一行中的两个整数并交换它们。此操作,每行最多只能执行一次。

  • 选择列表中的两列并交换它们。此操作,最多只能执行一次。

不难发现,你最多可以进行 n+1n+1 次操作,最少可以进行 00 次操作,所有操作的具体执行顺序随意。

我们的目标是:通过执行上述操作,使得最终列表中每一行的 mm 个整数都能按照 1,2,,m1,2,…,m 的顺序排列。

请你判断,目标是否能够达成。

输入格式

第一行包含两个整数 n,mn,m

接下来 nn 行,每行包含 mm 个整数,用来表示整数列表。保证每行的 mm 个整数都是一个 1m1\sim m 的排列。

输出格式

如果目标能够达成,则输出 YES,否则输出 NO

样例输入

2 4
1 3 2 4
1 3 4 2

样例输出

YES

提示

所有测试点满足 1n,m201\le n,m\le 20

1 1
1
YES
2 4
4 3 2 1
2 1 4 3
NO
2 4
1 3 2 4
1 3 4 2
YES