Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <queue>
  4. #include <cstring>
  5. using namespace std;
  6.  
  7. ifstream f("miting.in");
  8. ofstream g("miting.out");
  9.  
  10. int xmin=1e9+1, ymin=1e9+1, xmax=-1, ymax=-1;
  11. int n, m, p;
  12. char rand[64];
  13. string cuv;
  14. int dx[]={-1, 0, 1, 0};
  15. int dy[]={0, 1, 0, -1};
  16.  
  17. queue< pair <int, int> >q;
  18.  
  19. struct matrice{
  20. string litere;
  21. string partedecuv;
  22. int consum;
  23. int nr;
  24. }a[101][101];
  25.  
  26. void bordare()
  27. { for (int i=0;i<=n+1;i++) a[i][0].nr=a[i][m+1].nr=-1;
  28. for (int j=0;j<=m+1;j++) a[0][j].nr=a[n+1][j].nr=-1;
  29. }
  30.  
  31. void lee()
  32. { while (!q.empty())
  33. { int lc=q.front().first;
  34. int cc=q.front().second;
  35. q.pop();
  36. if (a[lc][cc].partedecuv!=cuv)
  37. for (int k=0;k<4;k++)
  38. { int ln=lc+dx[k];
  39. int cn=cc+dy[k];
  40. if (a[ln][cn].nr!=-1)
  41. { if (a[ln][cn].nr==0)
  42. { a[ln][cn].nr=a[lc][cc].nr+a[lc][cc].consum;
  43. a[ln][cn].consum=a[lc][cc].consum;
  44. a[ln][cn].litere=a[lc][cc].litere;
  45. a[ln][cn].partedecuv=a[lc][cc].partedecuv;
  46. q.push(make_pair(ln, cn));
  47. }
  48. else
  49. { if (a[ln][cn].partedecuv!=cuv)
  50. {
  51.  
  52. }
  53. }
  54. }
  55. }
  56. for (int i=1;i<=n;i++)
  57. { for (int j=1;j<=m;j++)
  58. cout<<a[i][j].nr<<" ";
  59. cout<<'\n';
  60. }
  61. cout<<'\n';
  62. }
  63.  
  64. }
  65.  
  66. int main()
  67. {
  68. f>>p;
  69. f>>n>>m;
  70. f>>cuv;
  71. int lg=cuv.length();
  72. for (int i=0;i<lg;i++)
  73. { cod[cuv[i]]=i+1;
  74. }
  75. for (int i=1;i<=n;i++)
  76. { f>>rand;
  77. for (int j=1;j<=m;j++)
  78. if (rand[j-1]=='#') a[i][j].nr=-1;
  79. else if (rand[j-1]=='_') a[i][j].nr=0;
  80. else a[i][j].nr=a[i][j].consum=1, a[i][j].litere[0]=a[i][j].partedecuv[0]=rand[j-1];
  81. }
  82. bordare();
  83. for (int i=1;i<=n;i++)
  84. { for (int j=1;j<=m;j++)
  85. { if (a[i][j].nr==1)
  86. { q.push(make_pair(i, j));
  87. if (xmin>i) xmin=i;
  88. if (ymin>j) ymin=j;
  89. if (xmax<i) xmax=i;
  90. if (ymax<j) ymax=j;
  91. }
  92. }
  93. }
  94. if (p==1) g<<(xmax-xmin+1)*(ymax-ymin+1)<<'\n';
  95. else lee();
  96. for (int i=1;i<=n;i++)
  97. { for (int j=1;j<=m;j++)
  98. cout<<a[i][j].nr<<" ";
  99. cout<<'\n';
  100. }
  101. return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement