Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("ferma.in");
- ofstream fout("ferma.out");
- int n, m, v, a[450][450], zone_totale, zona_curenta = 1;
- char caractere[450][450];
- int di[4] = {-1, 0, 1, 0}, dj[4] = {0, 1, 0, -1};
- map<int, int> mapa;
- void fil(int i, int j, char caracter_curent, int zona, int cul)
- {
- int cate = 1;
- queue<pair<int, int>> q;
- q.push({i,j});
- caractere[i][j] = '-';
- a[i][j] = cul;
- while(!q.empty())
- {
- i = q.front().first;
- j = q.front().second;
- q.pop();
- for(int k = 0; k < 4; k++)
- {
- int ni = i + di[k], nj = j + dj[k];
- if(caractere[ni][nj] == caracter_curent)
- {
- caractere[ni][nj] = '-';
- a[ni][nj] = cul;
- q.push({ni, nj});
- cate++;
- }
- }
- }
- mapa[zona] = cate;
- }
- int main()
- {
- fin >> v >> n >> m;
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++)
- fin >> caractere[i][j];
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++)
- if(caractere[i][j] != '-')
- fil(i, j, caractere[i][j], zona_curenta, caractere[i][j] - 96), zone_totale++, zona_curenta++;
- if(v == 1)
- {
- fout << zone_totale << '\n';
- }
- else
- {
- }
- for(int i = 1; i <= n; i++)
- {
- for(int j = 1; j <= m; j++)
- fout << setw(2)<< a[i][j] << ' ';
- fout << '\n';
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement