Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <queue>
- #include <cstring>
- using namespace std;
- ifstream f("miting.in");
- ofstream g("miting.out");
- int xmin=1e9+1, ymin=1e9+1, xmax=-1, ymax=-1;
- int n, m, p;
- char rand[64];
- string cuv;
- int dx[]={-1, 0, 1, 0};
- int dy[]={0, 1, 0, -1};
- queue< pair <int, int> >q;
- struct matrice{
- string litere;
- string partedecuv;
- int consum;
- int nr;
- }a[101][101];
- void bordare()
- { for (int i=0;i<=n+1;i++) a[i][0].nr=a[i][m+1].nr=-1;
- for (int j=0;j<=m+1;j++) a[0][j].nr=a[n+1][j].nr=-1;
- }
- void lee()
- { while (!q.empty())
- { int lc=q.front().first;
- int cc=q.front().second;
- q.pop();
- if (a[lc][cc].partedecuv!=cuv)
- for (int k=0;k<4;k++)
- { int ln=lc+dx[k];
- int cn=cc+dy[k];
- if (a[ln][cn].nr!=-1)
- { if (a[ln][cn].nr==0)
- { a[ln][cn].nr=a[lc][cc].nr+a[lc][cc].consum;
- a[ln][cn].consum=a[lc][cc].consum;
- a[ln][cn].litere=a[lc][cc].litere;
- a[ln][cn].partedecuv=a[lc][cc].partedecuv;
- q.push(make_pair(ln, cn));
- }
- else
- { if (a[ln][cn].partedecuv!=cuv)
- {
- }
- }
- }
- }
- for (int i=1;i<=n;i++)
- { for (int j=1;j<=m;j++)
- cout<<a[i][j].nr<<" ";
- cout<<'\n';
- }
- cout<<'\n';
- }
- }
- int main()
- {
- f>>p;
- f>>n>>m;
- f>>cuv;
- int lg=cuv.length();
- for (int i=0;i<lg;i++)
- { cod[cuv[i]]=i+1;
- }
- for (int i=1;i<=n;i++)
- { f>>rand;
- for (int j=1;j<=m;j++)
- if (rand[j-1]=='#') a[i][j].nr=-1;
- else if (rand[j-1]=='_') a[i][j].nr=0;
- else a[i][j].nr=a[i][j].consum=1, a[i][j].litere[0]=a[i][j].partedecuv[0]=rand[j-1];
- }
- bordare();
- for (int i=1;i<=n;i++)
- { for (int j=1;j<=m;j++)
- { if (a[i][j].nr==1)
- { q.push(make_pair(i, j));
- if (xmin>i) xmin=i;
- if (ymin>j) ymin=j;
- if (xmax<i) xmax=i;
- if (ymax<j) ymax=j;
- }
- }
- }
- if (p==1) g<<(xmax-xmin+1)*(ymax-ymin+1)<<'\n';
- else lee();
- for (int i=1;i<=n;i++)
- { for (int j=1;j<=m;j++)
- cout<<a[i][j].nr<<" ";
- cout<<'\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement