From b14bdff3af9ff546d73c4ad8339232f56847186c Mon Sep 17 00:00:00 2001 From: yenru0 Date: Fri, 15 Mar 2024 17:21:59 +0900 Subject: [PATCH] complete 1012 --- zeta_python/completed/1012.py | 50 +++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 zeta_python/completed/1012.py diff --git a/zeta_python/completed/1012.py b/zeta_python/completed/1012.py new file mode 100644 index 0000000..00a82c1 --- /dev/null +++ b/zeta_python/completed/1012.py @@ -0,0 +1,50 @@ +def find_group(Map, M, N, i, j): + ret = [] + temp = [] + temp.append((i, j)) + while temp: + t = temp.pop() + if t in ret: + continue + if 1 <= t[0]: + if Map[t[0] - 1][t[1]]: + temp.append((t[0] - 1, t[1])) + if t[0] < M - 1: + if Map[t[0] + 1][t[1]]: + temp.append((t[0] + 1, t[1])) + if 1 <= t[1]: + if Map[t[0]][t[1] - 1]: + temp.append((t[0], t[1] - 1)) + if t[1] < N - 1: + if Map[t[0]][t[1] + 1]: + temp.append((t[0], t[1] + 1)) + ret.append(t) + return ret + + +def solve(M, N, Ks): + Map = [[0 for _ in range(N)] for _ in range(M)] + count = 0 + found = {} + for k in Ks: + Map[k[0]][k[1]] = 1 + + for i in range(M): + for j in range(N): + if Map[i][j]: + if (i, j) in found: + continue + else: + r = find_group(Map, M, N, i, j) + count += 1 + for s in r: + found[s] = count + return count + + +if __name__ == '__main__': + T = int(input()) + for _ in range(T): + M, N, K = map(int, input().split()) + Ks = [tuple(map(int, input().split())) for _ in range(K)] + print(solve(M, N, Ks))