Advertisement
Guest User

zzzz

a guest
Nov 21st, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int vis[10020], dist[10020];
  8.  
  9. int inverte(int num){
  10.  
  11. int lembrar, inverso = 0;
  12.  
  13. while(num > 0){
  14.  
  15. lembrar = num % 10;
  16. inverso = inverso * 10 + lembrar;
  17. num /= 10;
  18.  
  19. }
  20.  
  21. return inverso;
  22. }
  23.  
  24. int bfs(int v, int fim){
  25.  
  26. queue<int> fila;
  27. int atual;
  28.  
  29. fila.push(v); //preciso colocar o homi na fila
  30.  
  31. while(!fila.empty()){
  32.  
  33. atual = fila.front(); //preciso pegar o primeiro da fila
  34. fila.pop();
  35.  
  36. if(atual == fim){
  37. return dist[atual];
  38. }
  39.  
  40. if(dist[atual+1] == 0){
  41. fila.push(atual + 1);
  42. dist[atual+1] = dist[atual] + 1;
  43. vis[atual] = 1;
  44. }
  45.  
  46. if(dist[inverte(atual)] == 0){
  47. fila.push( inverte(atual) );
  48. dist[inverte(atual)] = dist[atual] + 1;
  49. vis[atual] = 1;
  50. }
  51.  
  52. }
  53. }
  54.  
  55. int main(){
  56.  
  57. int t, a, b;
  58.  
  59. scanf("%d", &t);
  60.  
  61. while(t--){
  62.  
  63. scanf("%d %d", &a, &b);
  64.  
  65. for(int i = 0; i < 10020; i++){
  66. vis[i] = 0;
  67. dist[i] = 0;
  68. }
  69.  
  70. cout << bfs(a, b) << "\n";
  71.  
  72. }
  73.  
  74. return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement