Submission #67348213


Source Code Expand

Copy
from collections import defaultdict
class dsu():
n = 1
parent_or_size = []
def __init__(self, N):
self.n = N
self.parent_or_size = [-1 for _ in range(N)]
def merge(self, a, b):
assert 0 <= a < self.n and 0 <= b < self.n
x = self.leader(a)
y = self.leader(b)
if x == y:
return x
if -self.parent_or_size[x] < -self.parent_or_size[y]:
x, y = y, x
self.parent_or_size[x] += self.parent_or_size[y]
self.parent_or_size[y] = x
return x
def same(self, a, b):
return self.leader(a) == self.leader(b)
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
from collections import defaultdict

class dsu():
    n = 1
    parent_or_size = []
    def __init__(self, N):
        self.n = N
        self.parent_or_size = [-1 for _ in range(N)]
    def merge(self, a, b):
        assert 0 <= a < self.n and 0 <= b < self.n
        x = self.leader(a)
        y = self.leader(b)
        if x == y:
            return x
        if -self.parent_or_size[x] < -self.parent_or_size[y]:
            x, y = y, x
        self.parent_or_size[x] += self.parent_or_size[y]
        self.parent_or_size[y] = x
        return x
    def same(self, a, b):
        return self.leader(a) == self.leader(b)
    def leader(self, a):
        if self.parent_or_size[a] < 0:
            return a
        self.parent_or_size[a] = self.leader(self.parent_or_size[a])
        return self.parent_or_size[a]
    def size(self, a):
        return -self.parent_or_size[self.leader(a)]
    def groups(self):
        leader_buf = [self.leader(i) for i in range(self.n)]
        groups = defaultdict(list)
        for i, p in enumerate(leader_buf):
            groups[p].append(i)
        return list(groups.values())

H,W,K=map(int, input().split())
A=[tuple(map(int, input().split())) for _ in range(K)]

uf=dsu(K)

rmin=[r for r, c in A]
rmax=[r for r, c in A]
cmin=[c for r, c in A]
cmax=[c for r, c in A]

idx={A[i]: i for i in range(K)}

dirs=[(-1,0),(1,0),(0,-1),(0,1),(-1,-1),(-1,1),(1,-1),(1,1)]
for i,(r, c) in enumerate(A):
    for dr,dc in dirs:
        nbr = (r + dr, c + dc)
        if nbr in idx:
            j=idx[nbr]
            ri=uf.leader(i)
            rj=uf.leader(j)
            
            if ri!=rj:
                new=uf.merge(ri, rj)
                pre1,pre2=(rmin[ri], rmax[ri], cmin[ri], cmax[ri]), (rmin[rj], rmax[rj], cmin[rj], cmax[rj])
                
                rmin[new] = min(pre1[0],pre2[0])
                rmax[new] = max(pre1[1],pre2[1])
                cmin[new] = min(pre1[2],pre2[2])
                cmax[new] = max(pre1[3],pre2[3])


for i in range(K):
    if uf.leader(i) != i:
        continue

    if cmin[i] == 1 and cmax[i] == W:
        print("No")
        break

    if rmin[i] == 1 and rmax[i] == H:
        print("No")
        break

    if cmin[i] == 1 and rmin[i] == 1:
        print("No")
        break

    if cmax[i] == W and rmax[i] == H:
        print("No")
        break

else:
    print("Yes")


Submission Info

Submission Time
Task G - Big Banned Grid
User kotafuku
Language Python (PyPy 3.10-v7.3.12)
Score 575
Code Size 2461 Byte
Status AC
Exec Time 741 ms
Memory 135384 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 575 / 575
Status
AC × 4
AC × 45
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 69 ms 76792 KiB
00_sample_01.txt AC 68 ms 76740 KiB
00_sample_02.txt AC 68 ms 77016 KiB
00_sample_03.txt AC 70 ms 76816 KiB
01_random_04.txt AC 352 ms 134772 KiB
01_random_05.txt AC 340 ms 135056 KiB
01_random_06.txt AC 329 ms 134680 KiB
01_random_07.txt AC 334 ms 134716 KiB
01_random_08.txt AC 355 ms 135000 KiB
01_random_09.txt AC 331 ms 135004 KiB
01_random_10.txt AC 183 ms 108596 KiB
01_random_11.txt AC 134 ms 94748 KiB
01_random_12.txt AC 343 ms 132572 KiB
01_random_13.txt AC 195 ms 110496 KiB
01_random_14.txt AC 283 ms 124824 KiB
01_random_15.txt AC 301 ms 127632 KiB
01_random_16.txt AC 324 ms 101900 KiB
01_random_17.txt AC 223 ms 102020 KiB
01_random_18.txt AC 624 ms 114912 KiB
01_random_19.txt AC 637 ms 116308 KiB
01_random_20.txt AC 218 ms 90096 KiB
01_random_21.txt AC 204 ms 93584 KiB
01_random_22.txt AC 673 ms 134780 KiB
01_random_23.txt AC 741 ms 135384 KiB
01_random_24.txt AC 587 ms 134952 KiB
01_random_25.txt AC 621 ms 135368 KiB
01_random_26.txt AC 639 ms 135100 KiB
01_random_27.txt AC 662 ms 134796 KiB
01_random_28.txt AC 368 ms 110100 KiB
01_random_29.txt AC 420 ms 113732 KiB
01_random_30.txt AC 384 ms 114848 KiB
01_random_31.txt AC 577 ms 130160 KiB
01_random_32.txt AC 139 ms 87144 KiB
01_random_33.txt AC 511 ms 125644 KiB
01_random_34.txt AC 202 ms 93888 KiB
01_random_35.txt AC 515 ms 114868 KiB
01_random_36.txt AC 378 ms 100940 KiB
01_random_37.txt AC 734 ms 122984 KiB
01_random_38.txt AC 484 ms 112544 KiB
01_random_39.txt AC 105 ms 85308 KiB
01_random_40.txt AC 68 ms 76860 KiB
01_random_41.txt AC 68 ms 77160 KiB
01_random_42.txt AC 68 ms 77084 KiB
01_random_43.txt AC 67 ms 76836 KiB
01_random_44.txt AC 69 ms 76764 KiB


2025-07-06 (Sun)
00:14:04 +09:00