题号:NC237371
时间限制:C/C++/Rust/Pascal 6秒,其他语言12秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
传说中,在这个世界上有平行空间,但是只有在某些特定的时间(六一),特定的位置(某辆刹车失灵且高速行驶的车前)才可以穿越平行空间的壁障,短暂地前往那未知の地。
非常Lucky的,在今天,你在群里一如既往地水群的时候,平时御車得当的群友竟一时没有收住jio,使得你成功来到了一个少年の床底。
。。。。。
六一这一天,熬夜打了一夜的小乐从睡梦中醒来,他发现他自己的房间天旋地转,分不清东西南北。非常慌张的小乐害怕地掏出手机,打开了游戏,看到游戏里的上下左右他还分得清,这下他才安下了心,原来是房间坏了。
小乐的房间的俯视图是一个 N 米 × N 米 的正方形,他只记得自己的的床在房间的西北角的角落(当前的位置),但是他现在急需去房间的另外3个角落分别拿到耳机,充电线,雪碧 然后回到床上打游戏。不过已经分不清东南西北的他很难在杂乱的房间中走到想去的地方。
在床下的你听得直摇头,决心挽救这个孩子的未来。所以你决定要先一步到达房间的其他角落,把那些东西替换成:”戴上就摘不下来的英语听力耳机“,“拿起就会开始锻炼的跳绳”,“喝一口就想敲代码的牛可乐”(一种可乐)。
不过你也分不清东南西北,但是聪明的你早已看出了这个房间的一些端倪:
1. 房间可以视为 N × N 个空间组成的地图,每个空间都有一个唯一的编号(空间编号无规律但保证是N * N的排列)。
2. 每个空间都可以往东南西北四个方向行走前往相邻的空间,但是你此时也东南西北不分,所以只知道每个空间可以前往哪四个编号的空间
3. 当你到达房间边界并且再次面壁前进,会从房间的另外一边出来(见下图,红色位置向右移动会来到蓝色位置)
4. 绿色位置是房间的西北角,它的空间编号为1(此图只做解释并不是真的房间)
输入描述:
第一行一个正整数n代表房间的边长(0 < n <= 1000)
从第二行开始,紧接着n * n行。每行4个正整数,第i - 1行代表编号为i的空间可以前往哪4个编号的相邻空间。(其中你当前所在空间编号为 1,处于整个房间西北角的角落。)
输出描述:
输出多个位置的编号,以空格分隔,编号小的在前面,代表所有可能是房间角落的空间的编号
示例1
输入
复制
2
2 3 2 3
1 4 1 4
4 1 4 1
2 3 2 3
说明
房间布局如下图,1234都是房间的角落
1 2
3 4