5493: 星战(star)
Memory Limit:512 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:1
Solved:1
Description
最近小项的班级里流行一款推理谜题——星战(Star Battle)。它的规则如下:
在一个n行n列的网格中,网格被划分成n个不同的区域,你需要在网格上放置n个星星,不过它们有一些限制。
1. 每个区域内只能放置一颗星星。
1. 每个区域内只能放置一颗星星。
2. 任意两个星星不能位于网格的同一行、同一列。
3. 任意两个星星不能水平、垂直、对角线相邻。
小项是你的表弟,由于他把纸面的谜题变成程序的输入、以及把程序输出结果画在纸面上需要114.514秒,他希望你能开发一款程序,需要你的程序在1秒内得出星战谜题的解,并且先输出行号小的,后输出行号大的,如果有多组解,尽量使得前面行的星星的列号尽可能的小。你可以帮帮他吗?
Input
从文件star.in中读取数据。
第一行一个数字n。
接着n行,每行n个数字,a_{i,j}表示第i行第j列的网格属于a_{i,j}个区域。
Output
输出文件到star.out中。
如果谜题有解,则输出包含n行,每行两个数字,第i行表示第i行的星星所在的行号和列号。如果没有解,输出-1即可。
Sample Input Copy
5
1 1 1 1 1
1 1 1 2 3
4 5 5 2 3
4 4 2 2 3
4 3 3 3 3
Sample Output Copy
1 3
2 5
3 2
4 4
5 1
HINT
对于所有测试数据有:1≤n≤15,1≤a_{i,j}≤n,保证每个区域在网格上是连续的。