#P16427. pm13760永恒之舞

pm13760永恒之舞

题目背景

星辉舞厅每晚都会响起悠扬的乐曲。舞厅中有同样数量的男生和女生,每位男生都有自己心仪的女生。舞会经理希望安排一场特别的舞蹈:舞蹈结束后,任何参加了舞蹈的男生都不会因为看见某位未参加舞蹈的心仪女生,而抛下当前舞伴去邀请她参加下一支舞。

请你找出任意一种满足条件的舞伴安排。

题目描述

舞厅中有 nn 名男生和 nn 名女生,男生和女生均编号为 0,1,,n10,1,\ldots,n-1

给定一个由字符 YN 组成的 n×nn\times n 矩阵:

  • ii 行第 jj 个字符为 Y,表示男生 ii 喜欢女生 jj
  • ii 行第 jj 个字符为 N,表示男生 ii 不喜欢女生 jj

一场舞蹈由若干对舞伴组成,并需要满足:

  1. 至少有一对舞伴参加舞蹈;
  2. 每名男生至多出现在一对舞伴中;
  3. 每名女生至多出现在一对舞伴中;
  4. 每对舞伴中的男生必须喜欢与他配对的女生;
  5. 舞蹈结束后,对于每一名参加了舞蹈的男生,他喜欢的所有女生都必须参加了这场舞蹈。

55 条等价于:不存在一名参加了舞蹈的男生,喜欢某位没有参加舞蹈的女生。否则,他会抛下当前舞伴并邀请那名女生参加下一支舞。

请输出任意一种满足上述条件的安排。若不存在合法安排,则输出 -1

本题可能存在多种正确答案,需要使用特殊评测程序(SPJ)。

输入格式

第一行包含一个整数 nn

接下来 nn 行,每行包含一个长度为 nn 的字符串,描述男生对女生的喜欢关系。

输出格式

若不存在合法安排,输出一行一个整数:

-1

否则,第一行输出一个正整数 kk,表示参加舞蹈的舞伴对数。

接下来 kk 行,每行输出两个整数 bi,gib_i,g_i,表示男生 bib_i 与女生 gig_i 配对。

输出需要满足:

  • 1kn1\le k\le n
  • 所有 bib_i 互不相同;
  • 所有 gig_i 互不相同;
  • 男生 bib_i 喜欢女生 gig_i
  • 对每个参加舞蹈的男生,他喜欢的所有女生都出现在某一对输出舞伴中。

数据范围

  • 1n1001\le n\le 100
  • 输入矩阵只包含字符 YN
  • 每名男生至少喜欢一名女生。

样例 1

输入

4
YYNN
NYYN
NNYY
YNNY

输出

4
0 0
1 1
2 2
3 3

说明

所有女生都参加了舞蹈,因此没有男生能够找到未参加舞蹈的心仪女生。

样例 2

输入

4
YNNN
YYNN
YYNN
NNYY

输出

2
1 0
2 1

说明

这组输入存在多种合法安排,样例输出只是其中一种。

样例 3

输入

3
YNY
YNY
YNY

输出

2
1 0
2 2

说明

可能存在没有被任何男生喜欢的女生,这不影响答案的合法性。

样例 4

输入

5
YYYNN
YYYNN
NNNYY
NNNYY
NNNYY

输出

2
3 3
4 4

样例 5

输入

1
Y

输出

1
0 0