1 条题解
-
1
#include #define int long long using namespace std; const int N = 1e6 + 10; const int inf = 0x3f3f3f3f; int s , t; const int dis[4] = {1 , -1 , 2 , 2}; bool vis[N * 2]; struct node{ int num; int step; node(int xnum , int ystep){ num = xnum; step = ystep; } }; bool in(int x){ return x > 0; } int bfs(int start){ queue<node> q; q.push(node(start , 0)); vis[start] = true; while(!q.empty()){ node now = q.front(); q.pop(); for(int i = 0 ; i < 4 ; i ++){ int tx; if(i == 2){ tx = now.num * dis[i]; }else if(now.num % 2 == 0 && i == 3){ tx = now.num / dis[i]; }else if(i == 0 || i == 1){ tx = now.num + dis[i]; } if(in(tx) && !vis[tx] && tx <= N){ if(tx == t){ return now.step + 1; }else{ vis[tx] = true; q.push(node(tx , now.step + 1)); } } } } } signed main(){ freopen("time.in" , "r" , stdin); freopen("time.out" , "w" , stdout); int n; cin >> n; while(n --){ memset(vis , 0 , sizeof(vis)); cin >> s >> t; cout << bfs(s) * 2 << endl; } return 0; }
信息
- ID
- 557
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 234
- 已通过
- 19
- 上传者