-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path782.cpp
More file actions
76 lines (75 loc) · 2.09 KB
/
782.cpp
File metadata and controls
76 lines (75 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 0, 0, 1};
int dy[] = {0, -1, 1, 0};
char a[35][85];
bool b[35][85];
int N, M;
char C;
void call(int i, int j) {
int r, c;
if (i < 0 || j < 0 || i >= N || j >= M) return;
if (a[i][j] == C || b[i][j]) return;
b[i][j] = 1;
for (int k = 0; k < 4; k++) {
r = i + dx[k];
c = j + dy[k];
if (r >= 0 && c >= 0 && r < N && c < M && a[r][c] == C) a[i][j] = '#';
}
for (int k = 0; k < 4; k++) {
call(i + dx[k], j + dy[k]);
}
return;
}
int main() {
// freopen("C:\\Users\\MARUF\\Desktop\\in.txt","r",stdin);
// freopen("C:\\Users\\MARUF\\Desktop\\out.txt","w",stdout);
int n, m, i, j, k, tc, t = 1;
cin >> tc;
getchar();
while (tc--) {
i = 0;
int l = 0;
memset(a, 0, sizeof(a));
while (gets(a[i])) {
if (a[i][0] == '_') break;
if (l < strlen(a[i])) l = strlen(a[i]);
i++;
}
N = i;
M = l + 1;
int flag = 0, fl = 0;
int r, c;
for (i = 0; i < N; i++) {
m = strlen(a[i]);
for (j = 0; j < m; j++) {
if (flag == 0 && a[i][j] != ' ' && a[i][j] != '*' && a[i][j] != '#') {
C = a[i][j];
flag = 1;
} else if (a[i][j] == '*') {
a[i][j] = ' ';
fl = 1;
r = i;
c = j;
}
if (flag == 1 && fl == 1) break;
}
if (flag == 1 && fl == 1) break;
}
memset(b, 0, sizeof(b));
call(r, c);
for (i = 0; i < N; i++) {
flag = 0;
for (j = M - 1; j >= 0; j--) {
if (flag == 0 && a[i][j] != 0 && a[i][j] != ' ')
flag = 1;
else if (flag == 1 && a[i][j] == 0)
a[i][j] = ' ';
else if (flag == 0 && a[i][j] == ' ')
a[i][j] = 0;
}
}
for (i = 0; i <= N; i++) puts(a[i]);
}
return 0;
}