题解:P11580 [CCC2020] Escape Room

· · 题解

搜索。

对于每个位置 (i, j),让 i \times jnum_{i, j} 连一条边,所以起点为 1,终点为 n \times m

然后 bfs/dfs 即可。

```cpp #include <bits/stdc++.h> using namespace std; using ll = long long; int m, n; bool f[1000005]; vector<int> vc[1000005]; void bfs(){ queue<int> q; q.push(1); f[1] = 1; while(q.size()){ int fr = q.front(); q.pop(); for(int i = 0; i < vc[fr].size(); i++){ int v = vc[fr][i]; if(f[v]) continue; f[v] = 1; q.push(v); } } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> m >> n; for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++){ int num; cin >> num; vc[i * j].push_back(num); } } bfs(); if(f[n * m]) cout << "yes"; else cout << "no"; return 0; } ```