Advertisement
Guest User

palat

a guest
Nov 15th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <fstream>
  2. #include <fstream>
  3. #include <queue>
  4. using namespace std;
  5. ifstream fin ("palat.in");
  6. ofstream fout ("palat.out");
  7. struct poz
  8. {
  9. int x,y;
  10. };
  11. poz f[1000000];
  12. int a[1001][1001],n,m,i,j,k,mini=100000000,ix,jx;
  13. int dx[]= {0,1,0,-1};
  14. int dy[]= {-1,0,1,0};
  15. char x;
  16. queue<poz>q;
  17. int main()
  18. {
  19. fin>>n>>m;
  20. k=0;
  21. for(i=1; i<=n; i++)
  22. for(j=1; j<=m; j++)
  23. {
  24. fin>>x;
  25. if(x=='Z')
  26. a[i][j]=-1;
  27. else if(x=='I')
  28. {
  29. a[i][j]=1;
  30. q.push({i,j});
  31. }
  32. else if(x=='F')
  33. {
  34. k++;
  35. f[k]= {i,j};
  36.  
  37. }
  38. }
  39.  
  40. for(i=0; i<=n+1; i++)
  41. a[i][0]=a[i][m+1]=-1;
  42. for(j=0; j<=m+1; j++)
  43. a[0][j]=a[n+1][j]=-1;
  44.  
  45. poz p1,p2;
  46.  
  47. while(!q.empty())
  48. {
  49. p1=q.front();
  50. q.pop();
  51.  
  52. for(i=0; i<4; i++)
  53. {
  54. p2.x=p1.x+dx[i];
  55. p2.y=p1.y+dy[i];
  56.  
  57. if(a[p2.x][p2.y]==0)
  58. {
  59. a[p2.x][p2.y]=a[p1.x][p1.y]+1;
  60. q.push(p2);
  61. }
  62. }
  63. }
  64.  
  65. for(i=k;i>=1;i--)
  66. {
  67. if(a[f[k].x][f[k].y]<mini)
  68. mini=a[f[k].x][f[k].y],ix=f[k].x,jx=f[k].y;
  69. }
  70. fout<<ix<<' '<<jx;
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement