답안 #648237

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
648237 2022-10-05T19:17:37 Z beaconmc Stranded Far From Home (BOI22_island) PyPy 3
10 / 100
1000 ms 85440 KB
import sys,io,os
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
'''
sys.stdin = open("/Users/beaconmc/Downloads/in.txt", "r")
sys.stdout = open("sus.txt","w")
'''
def find(a):
    while cc[a] != a:
        cc[a] = cc[cc[a]]
        a = cc[a]
    return a


def union(a, b):
    aa = find(a)
    bb = find(b)
    if aa==bb: return

    if siz[aa] < sizes[b]:
        for i in stuff[aa]:
            ans[i] = 0
        stuff[aa] = []

    if siz[bb] < sizes[a]:
        for i in stuff[bb]:
            ans[i] = 0
        stuff[bb] = []

    if len(stuff[aa]) > len(stuff[bb]):
        stuff[aa],stuff[bb] = stuff[bb], stuff[aa]
    
    for i in stuff[aa]:
        stuff[bb].append(i)
        
    siz[bb] += siz[aa]

    
    cc[aa] = bb
    




n,m = map(int, input().split())
cc = [i for i in range(n)]
sizes = list(map(int, input().split()))

siz = list(sizes)

stuff = [[i]for i in range(n)]
ans = [1 for i in range(n)]

edges = []
for i in range(m):
    a,b = map(int, input().split())
    a-=1;b-=1
    edges.append([max(sizes[a],sizes[b]),min(sizes[a],sizes[b]), a,b])
edges.sort()

for i in edges:
    union(i[2],i[3])


for i in ans:
    print(i,end="")

    
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 18220 KB Output is correct
2 Correct 48 ms 18136 KB Output is correct
3 Correct 45 ms 18252 KB Output is correct
4 Correct 124 ms 25872 KB Output is correct
5 Correct 124 ms 24704 KB Output is correct
6 Correct 121 ms 24040 KB Output is correct
7 Correct 133 ms 24452 KB Output is correct
8 Correct 119 ms 23676 KB Output is correct
9 Correct 123 ms 24636 KB Output is correct
10 Correct 120 ms 24588 KB Output is correct
11 Correct 114 ms 24992 KB Output is correct
12 Correct 114 ms 25164 KB Output is correct
13 Correct 100 ms 25172 KB Output is correct
14 Correct 116 ms 24516 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 42 ms 18168 KB Output is correct
2 Correct 37 ms 18228 KB Output is correct
3 Execution timed out 1092 ms 85440 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 18228 KB Output is correct
2 Execution timed out 1094 ms 80952 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 36 ms 18220 KB Output is correct
2 Execution timed out 1099 ms 80576 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 18220 KB Output is correct
2 Correct 48 ms 18136 KB Output is correct
3 Correct 45 ms 18252 KB Output is correct
4 Correct 124 ms 25872 KB Output is correct
5 Correct 124 ms 24704 KB Output is correct
6 Correct 121 ms 24040 KB Output is correct
7 Correct 133 ms 24452 KB Output is correct
8 Correct 119 ms 23676 KB Output is correct
9 Correct 123 ms 24636 KB Output is correct
10 Correct 120 ms 24588 KB Output is correct
11 Correct 114 ms 24992 KB Output is correct
12 Correct 114 ms 25164 KB Output is correct
13 Correct 100 ms 25172 KB Output is correct
14 Correct 116 ms 24516 KB Output is correct
15 Correct 42 ms 18168 KB Output is correct
16 Correct 37 ms 18228 KB Output is correct
17 Execution timed out 1092 ms 85440 KB Time limit exceeded
18 Halted 0 ms 0 KB -