Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <queue>
- #include <cstring>
- using namespace std;
- int n,m;
- string Map[101][101],cartela;
- queue < pair < int, int > > coada;
- int startx,starty;
- int di[]={ -1, 0, 1, 0};
- int dj[]={ 0, 1, 0, -1};
- int c,nr = 1;
- int Map2[101][101];
- void citire()
- {
- ifstream f("barlog.in");
- f >> c;
- f >> n >> m;
- for (int i = 1 ;i <=n ; i++)
- for (int j=1; j <= m ; j++) f >> Map[i][j];
- f >> startx >> starty;
- coada.push(make_pair(startx,starty));
- Map2[startx][starty]=1;
- f >> cartela;
- f.close();
- }
- bool ok(int i, int j)
- {
- if (i < 1 || j < 1 || j > m || i > n) return false;
- if(Map2[i][j] != 0 ) return false;
- return true;
- }
- bool ok2(int i,int j)
- {
- unsigned int st = 0 , dr = 0;
- unsigned int x = Map[i][j].size(),y = cartela.size() ;
- while ( st < x && dr < y)
- {
- if (Map[i][j][st] == cartela[dr])
- {
- st ++;
- dr ++;
- }
- else dr ++;
- }
- if ( st == x )return true;
- return false;
- }
- void afisare()
- {
- for (int i=1 ; i <= n ;i++)
- {
- for (int j = 1; j <= m; j++)
- cout << Map2[i][j] << ' ';
- cout <<'\n';
- }
- }
- void lee()
- {
- int i, j,i_urm, j_urm;
- while(!coada.empty())
- {
- i = coada.front().first;
- j = coada.front().second;
- coada.pop();
- for(int directie = 0; directie < 4 ; directie ++)
- {
- i_urm = i + di[directie];
- j_urm = j + dj[directie];
- if(ok(i_urm,j_urm) && ok2(i_urm,j_urm))
- {
- Map2[i_urm][j_urm] = Map2[i][j] + 1;
- coada.push(make_pair(i_urm,j_urm));
- }
- }
- }
- }
- int main()
- { //ofstream g("barlog.out");
- citire();
- lee();
- afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment