restructure zeta/** to storage/zeta/**
This commit is contained in:
50
storage/zeta/py/completed/1012.py
Normal file
50
storage/zeta/py/completed/1012.py
Normal file
@@ -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))
|
||||
Reference in New Issue
Block a user