Submission #648204

#TimeUsernameProblemLanguageResultExecution timeMemory
648204beaconmcStranded Far From Home (BOI22_island)Cpython 3
0 / 100
15 ms2900 KiB
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])
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...