1326 - 棋盘

有一个m×m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。

任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上、下、左、右四个方向前进。当你从一个格子走向另一个格子时,如果两个格子的颜色相同,那你不需要花费金币;如果不同,则你需要花费1个金币。

另外,你可以花费2个金币施展魔法让下一个无色格子暂时变为你指定的颜色。但这个魔法不能连续使用,而且这个魔法的持续时间很短,也就是说,如果你使用了这个魔法,走到了这个暂时有颜色的格子上,你就不能继续使用魔法;只有当你离开这个位置,走到一个本来就有颜色的格子上的时候,你才能继续使用这个魔法,而当你离开了这个位置(施展魔法使得变为有颜色的格子)时,这个格子恢复为无色。

现在你要从棋盘的最左上角,走到棋盘的最右下角,求花费的最少金币是多少?


输入样例#1:
5 7
1 1 0
1 2 0
2 2 1
3 3 1
3 4 0
4 4 1
5 5 0

输出样例#1:
8

输入样例2:
5 5
1 1 0
1 2 0
2 2 1
3 3 1
5 5 0

输出样例2:
-1

说明:<br />

输入输出样例1说明

<img src="http://oj.czos.cn:443/admin/../data:image/png;base64,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" alt="" /><br />

从(1,1)开始,走到(1,2)不花费金币
从(1,2)向下走到(2,2)花费1枚金币
从(2,2)施展魔法,将(2,3)变为黄色,花费2枚金币
从(2,2)走到(2,3)不花费金币
从(2,3)走到(3,3)不花费金币
从(3,3)走到(3,4)花费1枚金币
从(3,4)走到(4,4)花费1枚金币
从(4,4)施展魔法,将(4,5)变为黄色,花费2枚金币,
从(4,4)走到(4,5)不花费金币
从(4,5)走到(5,5)花费1枚金币
共花费8枚金币。

输入输出样例2说明

<img src="http://oj.czos.cn:443/admin/../data:image/png;base64,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" alt="" /> 

从(1,1)走到(1,2),不花费金币<br />

从(1,2)走到(2,2),花费 1 1金币
施展魔法将(2,3)变为黄色,并从(2,2)走到(2,3)花费 22 金币
从(2,3)走到(3,3)不花费金币
从(3,3)只能施展魔法到达(3,2),(2,3),(3,4),(4,3)
而从以上四点均无法到达(5,5),故无法到达终点,输出−1

数据规模与约定
对于30%的数据,1≤m≤5,1≤n≤10。
对于60%的数据,1≤m≤20,1≤n≤200。
对于100%的数据,1≤m≤100,1≤n≤1000。

输入

一行包含两个正整数m,n,以一个空格分开,分别代表棋盘的大小,棋盘上有颜色的格子的数量。
接下来的n行,每行三个正整数x,y,c分别表示坐标为(x,y)的格子有颜色c。
其中 c=1代表黄色,c=0代表红色。相邻两个数之间用一个空格隔开。棋盘左上角的坐标为(1,1),右下角的坐标为(m,m)。
棋盘上其余的格子都是无色。保证棋盘的左上角,也就是(1,1) 一定是有颜色的。

输出

一个整数,表示花费的金币的最小值,如果无法到达,输出−1。

样例

输入

5 7
1 1 0
1 2 0
2 2 1
3 3 1
3 4 0
4 4 1
5 5 0

输出

8

提示

【来源】

noip2017普及组复赛

时间限制 1 秒
内存限制 256 MB
讨论 统计
上一题 下一题