求救

P3956 [NOIP2017 普及组] 棋盘

@[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


|