@[Mineceaft___fen](https://www.luogu.com.cn/user/799190)
```cpp
#include <bits/stdc++.h>
#define inf 0x7fffffff
using namespace std;
int fx[4] = {-1, 0, 1, 0};
int fy[4] = {0, -1, 0, 1};
int f[110][110];
int mp[110][110];
int m, n, ans = inf;
void dfs(int x, int y, int sum, bool frog)
{
if (sum >= f[x][y])
return;
f[x][y] = sum;
if (x == m && y == m)
{
ans = min(ans, sum);
return;
}
for (int i = 0; i < 4; ++i)
{
if (x < 1 || y < 1 || x > m || y > m)
continue;
int xx = x + fx[i];
int yy = y + fy[i];
if (mp[xx][yy])
{
if (mp[xx][yy] == mp[x][y])
dfs(xx, yy, sum, false);
else
dfs(xx, yy, sum + 1, false);
}
else
{
if (!frog)
{
mp[xx][yy] = mp[x][y];
dfs(xx, yy, sum + 2, true);
mp[xx][yy] = 0;
}
}
}
}
int main()
{
memset(f, 0x7f, sizeof(f));
scanf("%d %d", &m, &n);
for (int i = 1; i <= n; ++i)
{
int x, y, c;
scanf("%d %d %d", &x, &y, &c);
mp[x][y] = c + 1;
}
dfs(1, 1, 0, false);
printf("%d", ans == inf ? -1 : ans);
return 0;
}
```
by UnKnown_Error____ @ 2023-08-27 09:51:14
思路和你的基本相似,你可以参考一下
by UnKnown_Error____ @ 2023-08-27 09:52:15
@[Mineceaft___fen](/user/799190)
by UnKnown_Error____ @ 2023-08-27 09:52:58
@[PCL2](/user/1073864) 泰酷辣
by Minecraft___fen @ 2023-08-27 09:55:02
@[PCL2](/user/1073864) 蟹蟹
by Minecraft___fen @ 2023-08-27 09:55:31
@[Mineceaft___fen](/user/799190) 能过吗?
洛谷这道题的数据据我所知还没加强过
by UnKnown_Error____ @ 2023-08-27 09:56:10
@[Mineceaft___fen](/user/799190) 嘿嘿,没事
看你发了个求助帖,所以才发了一下我这个蒟蒻的代码
by UnKnown_Error____ @ 2023-08-27 09:58:02
@[PCL2](/user/1073864) 我正在看看
by Minecraft___fen @ 2023-08-27 09:58:37