Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define optimizar ios_base::sync_with_stdio(0); cin.tie(0)
- #define MAXN 102
- using namespace std;
- int n, m;
- int arr[MAXN][MAXN];
- int matriz[MAXN][MAXN];
- struct ura {
- int N, S, E, O;
- int c;
- void limpia() {
- for(int i = N; i <= S; i++)
- for(int j = O; j <= E; j++)
- matriz[i - N + 1][j - O + 1] = 0;
- }
- bool igual(ura b) {
- }
- };
- vector < ura > clusters;
- int padre[MAXN];
- int mov[8][2] = {
- -1, -1,
- -1, 0,
- -1, 1,
- 0, -1,
- 0, 1,
- 1, -1,
- 1, 0,
- 1, 1,
- };
- void colorea(int i, int j, ura &nueva) {
- if(arr[i][j] != -1) return;
- arr[i][j] = nueva.c;
- nueva.N = min(nueva.N, i);
- nueva.S = max(nueva.S, i);
- nueva.E = max(nueva.E, j);
- nueva.O = min(nueva.O, j);
- for(int k = 0; k < 8; k++)
- colorea(i + mov[k][0], j + mov[k][1], nueva);
- }
- int main()
- {
- optimizar;
- int color = 0;
- cin >> m >> n;
- char car;
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++) {
- cin >> car;
- if(car == '1') arr[i][j] = -1;
- }
- ura nueva;
- bool flag;
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++)
- if(arr[i][j] == -1) {
- nueva.N = nueva.S = i;
- nueva.E = nueva.O = j;
- nueva.c = ++color;
- colorea(i, j, nueva);
- flag = true;
- for(int k = 0; k < clusters.size(); k++) {
- if(clusters[k].igual(nueva)) {
- padre[color] = k;
- flag = false; break;
- }
- }
- if(flag) { padre[color] = clusters.size(); clusters.push_back(nueva); };
- }
- for(int i = 1; i <= n; i++) {
- for(int j = 1; j <= m; j++) {
- car = arr[i][j] ? padre[arr[i][j]] + 'a' : '0';
- cout << car;
- }
- cout << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement