Submission #24709890


Source Code Expand

import sys, copy
from collections import defaultdict, deque

g_counter = 0
group = defaultdict(int)
group_parent = defaultdict(int)

def create_group(r, c):
  global group, group_parent, g_counter
  g_counter += 1
  group[(r, c)] = g_counter
  group_parent[g_counter] = g_counter # self-point

def set_group(r, c, g):
  global group
  group[(r, c)] = g

def get_group(r, c):
  global group, group_parent
  p = group[(r, c)]
  if p == 0:
    return 0
  while group_parent[p] != p:
    p = group_parent[p]
  return p

def merge_group(p1, p2):
  global group_parent
  group_parent[p2] = group_parent[p1]

####

def add_link(r, c):
  global node, H, W
  node[r][c] = 1
  join = False
  for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
    r2, c2 = r + dr, c + dc
    if 1 <= r2 <= H and 1 <= c2 <= W:
      if node[r2][c2] == 1:
        join = True
        g1 = get_group(r, c)
        g2 = get_group(r2, c2)
        if g1 == 0:
          set_group(r, c, g2)
        else:
          merge_group(g1, g2)
  if not join:
    create_group(r, c)

def search(r1, c1, r2, c2):
  global node, H, W
  if node[r1][c1] == 0 or node[r2][c2] == 0:
    return 'No'
  g1 = get_group(r1, c1)
  g2 = get_group(r2, c2)
  if g1 == g2:
    return 'Yes'
  else:
    return 'No'

def main(f):
  global node, H, W
  H, W = map(int, f.readline().split())
  node = [[0] * (W+1) for _ in range(H+1)]

  Q = int(f.readline())
  for _ in range(Q):
    tmp = list(map(int, f.readline().split()))
    if tmp[0] == 1:
      _, r, c = tmp
      add_link(r, c)
    else:
      _, r1, c1, r2, c2 = tmp
      print(search(r1, c1, r2, c2))

main(sys.stdin)

Submission Info

Submission Time
Task 012 - Red Painting(★4)
User enakai
Language PyPy3 (7.3.0)
Score 4
Code Size 1693 Byte
Status AC
Exec Time 292 ms
Memory 125988 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 4 / 4
Status
AC × 3
AC × 43
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt
Case Name Status Exec Time Memory
sample_01.txt AC 86 ms 68736 KiB
sample_02.txt AC 63 ms 68400 KiB
sample_03.txt AC 61 ms 68592 KiB
subtask_1_01.txt AC 165 ms 75452 KiB
subtask_1_02.txt AC 149 ms 84904 KiB
subtask_1_03.txt AC 161 ms 82560 KiB
subtask_1_04.txt AC 197 ms 99284 KiB
subtask_1_05.txt AC 176 ms 82724 KiB
subtask_1_06.txt AC 117 ms 75436 KiB
subtask_1_07.txt AC 239 ms 92188 KiB
subtask_1_08.txt AC 194 ms 88016 KiB
subtask_1_09.txt AC 139 ms 79252 KiB
subtask_1_10.txt AC 164 ms 77916 KiB
subtask_1_11.txt AC 134 ms 85736 KiB
subtask_1_12.txt AC 111 ms 77376 KiB
subtask_1_13.txt AC 147 ms 81916 KiB
subtask_1_14.txt AC 165 ms 81444 KiB
subtask_1_15.txt AC 185 ms 89972 KiB
subtask_1_16.txt AC 165 ms 98192 KiB
subtask_1_17.txt AC 204 ms 98104 KiB
subtask_1_18.txt AC 134 ms 77272 KiB
subtask_1_19.txt AC 194 ms 87440 KiB
subtask_1_20.txt AC 184 ms 83876 KiB
subtask_1_21.txt AC 212 ms 105428 KiB
subtask_1_22.txt AC 97 ms 89324 KiB
subtask_1_23.txt AC 149 ms 86848 KiB
subtask_1_24.txt AC 178 ms 90348 KiB
subtask_1_25.txt AC 167 ms 81768 KiB
subtask_1_26.txt AC 109 ms 79924 KiB
subtask_1_27.txt AC 199 ms 87156 KiB
subtask_1_28.txt AC 195 ms 82204 KiB
subtask_1_29.txt AC 212 ms 80352 KiB
subtask_1_30.txt AC 245 ms 81828 KiB
subtask_1_31.txt AC 198 ms 78060 KiB
subtask_1_32.txt AC 275 ms 84812 KiB
subtask_1_33.txt AC 292 ms 94256 KiB
subtask_1_34.txt AC 191 ms 125988 KiB
subtask_1_35.txt AC 227 ms 111856 KiB
subtask_1_36.txt AC 242 ms 113704 KiB
subtask_1_37.txt AC 221 ms 108212 KiB
subtask_1_38.txt AC 221 ms 108280 KiB
subtask_1_39.txt AC 239 ms 112516 KiB
subtask_1_40.txt AC 238 ms 112800 KiB