print1945. Totem

printTotem

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Mister No (real name Jerry Drake) is a comic book character who frequently gets himself into a lot of trouble, which he is usually able to get out of. However, this time it's not so ea sy. He was searching for ancient Mayan treasures and, in the process, stumbled upon a lost temple. Inside the temple there is a large hall, and inside the hall stands a stone Totem with inscriptions that are the key to understanding the purpose of life (42). However, getting to the Totem is a great challenge.
The Totem is situated on the opposite side of the hall form the entrance. The floor of the hall is covered with stone tiles that bear a striking resemblance to domino tiles. Each tile is divided into two halves (squares), and each half has a number from one to six, inclusive, chiseled into it. Tiles are arranged in `N` rows, with `N` tiles in each odd-numbered row and `N-1` tiles in each even-numbered row. The image below corresponds to the first test example (N = 5):

26012.png

It is only possible to step from one tile to an adjacent one if the two tiles have matching numbers on halves that share an edge. Help Mister No find the shortest path to the Totem by determining the sequence of tiles (outputting the sequence of tiles' labels, described below) that need to be stepped on, in order, from the first to the last tile on the path. If there is no possible path to the Totem, find the shortest path to the tile with the largest label (so that Mister No can make a heroic jump). The stone tiles are labelled in row-major order: in the first row, the first tile has the label 1, and the last one N; in the second row, the first tile is `N+1`, and the last one `2*N-1`, and so on. The entrance leads to the tile with label 1, and the totem is on the last tile in the last row. Mister No always starts from the entrance.
The first line of input contains the positive integer `N` (`1\ ≤\ N\ ≤\ 500`), the number of stone tile rows. Each of the following `N*N-N/2` lines (where “/” stands for integer division) contains two positive integers `A_i` and `B_i` (`1\ ≤\ A_i,\ B_i\ ≤\ 6`, `1\ ≤\ i\ ≤\ N*N-N/2`), the values chiseled into the left and right halves, respectively, of tile `i`.
The first line of output must contain the length (in tiles) of the required shortest path.
The second line of output must contain a sequence of space-separated positive integers, the labels of tiles on the shortest path. As there can exist more than one shortest path, output any one of them.

Sample Input #1

5
1 4
4 5
3 4
5 4
5 2
4 2
5 6
4 4
6 5
2 4
5 1
6 1
1 6
2 3
4 2
5 3
1 2
5 5
4 1
2 2
4 3
2 3
3 4

Sample Output #1

7
1 2 7 12 17 22 23

Sample Input #2

3
1 2
2 3
6 6
2 4
3 5
6 6
4 5
5 6

Sample Output #2

4
1 2 5 8

Sample Input #3

4
1 5
5 3
5 5
5 6
5 3
6 4
4 5
2 5
2 4
4 3
2 4
5 2
1 4
1 6

Sample Output #3

7
1 5 8 12 9 10 13
Source: COCI 2012/2013, contest #5
loading