Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int st, en;
- int lf(int x){
- deque <int> d;
- while(x){
- d.push_back(x % 10);
- x /= 10;
- }
- reverse(d.begin(), d.end());
- d.push_back(d.front());
- d.pop_front();
- int ans = 0;
- while(!d.empty()){
- ans *= 10;
- ans += d.front();
- d.pop_front();
- }
- return ans;
- }
- int rg(int x){
- deque <int> d;
- while(x){
- d.push_back(x % 10);
- x /= 10;
- }
- reverse(d.begin(), d.end());
- d.push_front(d.back());
- d.pop_back();
- int ans = 0;
- while(!d.empty()){
- ans *= 10;
- ans += d.front();
- d.pop_front();
- }
- return ans;
- }
- int main()
- {
- cin >> st >> en;
- queue <int> q;
- map <int, int> used;
- q.push(st);
- used[st] = 1;
- while(used[en] == 0){
- int i = q.front();
- q.pop();
- // cout << i << endl;
- if(i / 1000 != 9 && !used[i + 1000]){
- used[i + 1000] = i;
- q.push(i + 1000);
- }
- if(i % 10 != 1 && !used[i - 1]){
- used[i - 1] = i;
- q.push(i - 1);
- }
- if(!used[lf(i)]){used[lf(i)] = i;
- q.push(lf(i));}
- if(!used[rg(i)]){used[rg(i)] = i;
- q.push(rg(i));}
- }
- vector <int> out;
- while(used[en] != 1){
- //cout << en << endl;
- out.push_back(en);
- en = used[en];
- }
- out.push_back(st);
- for(int i = out.size() - 1; i >= 0; i--){
- cout << out[i] << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement