用户输出
10
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#106510 | #1449. 跳跃机器人 | Accepted | 100 | 60 ms | 4920 K | C++ / 552 B | slipyl | 2024-07-03 14:38:11 |
#include <bits/stdc++.h>
using namespace std;
int bfs(int n) {
int vis[n + 2];
memset(vis, -1, sizeof(vis));
queue<int> q;
vis[1] = 0;
q.push(1);
while (!q.empty()) {
int m = q.front();
q.pop();
if (m - 1 >= 1 && m - 1 <= n && vis[m - 1] == -1) {
vis[m - 1] = vis[m] + 1;
q.push(m - 1);
}
if (m + 1 >= 1 && m + 1 <= n && vis[m + 1] == -1) {
vis[m + 1] = vis[m] + 1;
q.push(m + 1);
}
if (2 * m >= 1 && 2 * m <= n && vis[m * 2] == -1) {
vis[m * 2] = vis[m] + 1;
q.push(m * 2);
}
if (m - 1 == n || m + 1 == n || 2 * m == n) {
return vis[n];
}
}
}
int main() {
int n;
cin >> n;
cout << bfs(n);
}