提交时间:2024-01-21 15:47:31
运行 ID: 121199
#include<iostream> #include<vector> using namespace std; const int N = 110; int n, a, b, t, ans = 1e9, q[N]; bool vis[N]; vector<int> vec[N]; int dfs(int x, int cnt = 0){ if(q[x] != 0) return q[x]; if(vis[x]) return 1e9; if(x == b){ ans = min(ans, cnt - 1); return cnt - 1; } vis[x] = true; int Min = 1e9; for(int i = 0; i < vec[x].size(); i++){ Min = min(dfs(vec[x][i], cnt + 1), Min); } vis[x] = false; return q[x] = Min; } int main(){ cin >> n >> a >> b; for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ cin >> t; if(t) vec[i].push_back(j); } } dfs(a); cout << ans; return 0; }