hihoCoder太阁最新面经算法竞赛10 register

Ended

Participants:138

Verdict:Accepted
Score:100 / 100
Submitted:2016-07-29 17:04:40

Lang:Python2

Edit
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
cnt = 0
r = [-1] * 1000000
def find(x):
    if r[x] == x:
        return x
    else:
        r[x] = find(r[x])
        return r[x]
def cmerge(ab):
    rarb = find(a)find(b)
    if ra == rb:
        return False
    r[ra] = rb
    return True
for i in range(input()):
    xy = map(intraw_input().split())
    k = x * 1000 + y
    if r[k] == -1:
        r[k] = k
        cnt += 1
    for dxdy in ((0,1),(0,-1),(1,0),(-1,0)):
        xxyy = x + dxy + dy
        if xx < 0 or xx >= 1000 or yy < 0 or yy >= 1000:
            continue
        kk = xx * 1000 + yy
        if r[kk] >= 0 and cmerge(kkk):
            cnt -= 1
    print cnt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX