Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define MAX 2550
  4. int n,xf,yf;
  5. char m[MAX][MAX];
  6. bool v[MAX][MAX];
  7. //PENDIENTE
  8. struct solve{
  9. int x;
  10. int y;
  11. int d;
  12. int t;
  13. solve(int x1,int y1,int d1,int t1) : x(x1),y(y1),d(d1),t(t1){}
  14. };
  15. int bfs(){
  16. solve in(0,0,0,1);
  17. queue<solve>Cola;
  18. Cola.push(in);
  19. int dx[4]={0,0,1,-1};
  20. int dy[4]={1,-1,0,0};
  21. while(!Cola.empty()){
  22. solve now = Cola.front();
  23. Cola.pop();
  24. if(now.x==xf&&now.y==yf)return now.d;
  25. if(v[now.x][now.y])continue;
  26. v[now.x][now.y]=true;
  27. for(int i=0;i<4;i++){
  28. int x=now.x+dx[i];
  29. int y=now.y+dy[i];
  30. now.t++;
  31. if(x>=0&&x<=n&&y>=0&&y<=n){
  32. if(m[x][y]=='2'||m[x][y]=='3'||m[x][y]=='4'||m[x][y]=='5'||m[x][y]=='6'||m[x][y]=='7'||m[x][y]=='8'||m[x][y]=='9'){
  33. if(m[x][y]+48%now.t!=0){
  34. solve r(x,y,now.d+1,now.t);
  35. }
  36. }
  37. else solve r(x,y,now.d+1,now.t);
  38. }
  39. }
  40. }
  41. return -1;
  42. }
  43. int main (){
  44. ios_base::sync_with_stdio(0);
  45. cin.tie(0);
  46. cin>>n;
  47. for(int i=0;i<n;i++){
  48. for(int j=0;j<n;j++){
  49. cin>>m[i][j];
  50. }
  51. }
  52. xf=n-1;
  53. yf=n-1;
  54. cout << bfs();
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement