60分哇:为什么怎么做都是13啊(测试点8)

P3956 [NOIP2017 普及组] 棋盘

| 黄 | -- | 黄 | -- | -- | -- | -- | | -----------: | -----------: | -----------: | -----------: | -----------: | -----------: | -----------: | -----------: | | | | | 黄 | | 红 | | | | | | | | 黄 | | | | | 黄 | 红 | | | 黄 | | | | | | 红 | 黄 | 黄 | | 黄 | | | | | | | | | 黄 | | | | 红 | 红 | 上面打错了 求一种走到11的方法
by dadaaa @ 2021-08-24 22:26:06


```cpp #include <bits/stdc++.h> using namespace std; int m, n, x[1010], y[1010], c[1010], vis[1010], s, t, p, q; int col[110][110]; vector<pair<int,int> > G[1010]; void add(int u, int v, int w) { G[u].push_back(make_pair(v, w)); G[v].push_back(make_pair(u, w)); } int bfs(void) { priority_queue<pair<int,int> > Q; Q.push(make_pair(0, s)); while (!Q.empty()) { pair<int,int> PA = Q.top(); Q.pop(); int d = -PA.first; int u = PA.second; if (vis[u]) continue; vis[u] = 1; if (u == t) { return d; } for (int i = 0; i < G[u].size(); i++) { int v = G[u][i].first; int w = G[u][i].second; Q.push(make_pair(-(d+w), v)); } } return -1; } int main() { cin >> m >> n; if (m == 1) { cout << 0 << endl; return 0; } for (int i = 1; i <= n; i++) { cin >> x[i] >> y[i] >> c[i]; c[i]++; if (x[i] == 1 && y[i] == 1) s = i; else if (x[i] == m && y[i] == m) t = i; else if (x[i] == m && y[i] == m-1) p = i; else if (x[i] == m-1 && y[i] == m) q = i; col[x[i]][y[i]] = c[i]; } for (int i = 1; i < n; i++) { for (int j = i+1; j <= n; j++) { if ((x[i]==x[j]&&(y[i]-y[j]==1||y[j]-y[i]==1))||(y[i]==y[j]&&(x[i]-x[j]==1||x[j]-x[i]==1))) add(i, j, c[i]!=c[j]); else if ((x[i]-x[j]==1||x[j]-x[i]==1)&&(y[i]-y[j]==1||y[j]-y[i]==1)&&(!(col[x[i]][y[j]]||col[x[j]][y[i]]))) add(i, j, (c[i]!=c[j])+2); else if (((x[i]==x[j]&&(y[i]-y[j]==2||y[j]-y[i]==2))||(y[i]==y[j]&&(x[i]-x[j]==2||x[j]-x[i]==2)))&&(!col[(x[i]+x[j])>>1][(y[i]+y[j])>>1])) add(i, j, (c[i]!=c[j])+2); } } if (!t) { t = n+1; if (p) add(p, t, 2); if (q) add(q, t, 2); } cout << bfs() << endl; return 0; } ```
by 0x3F @ 2021-08-24 22:29:14


跑一边
by 0x3F @ 2021-08-24 22:29:26


兄弟你第6行第5列,不是白格是红格,我看你的图搞了半天。
by Vivi233 @ 2021-09-16 16:01:27


|