import sys
input = lambda: sys.stdin.readline().strip()
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 |
34 ms |
18212 KB |
Output is correct |
2 |
Correct |
35 ms |
18168 KB |
Output is correct |
3 |
Correct |
35 ms |
18120 KB |
Output is correct |
4 |
Correct |
116 ms |
24856 KB |
Output is correct |
5 |
Correct |
132 ms |
24636 KB |
Output is correct |
6 |
Correct |
109 ms |
23976 KB |
Output is correct |
7 |
Correct |
110 ms |
24916 KB |
Output is correct |
8 |
Correct |
107 ms |
24528 KB |
Output is correct |
9 |
Correct |
114 ms |
25252 KB |
Output is correct |
10 |
Correct |
113 ms |
25252 KB |
Output is correct |
11 |
Correct |
122 ms |
25196 KB |
Output is correct |
12 |
Correct |
115 ms |
24916 KB |
Output is correct |
13 |
Correct |
112 ms |
24792 KB |
Output is correct |
14 |
Correct |
124 ms |
25256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
37 ms |
18140 KB |
Output is correct |
2 |
Correct |
37 ms |
18140 KB |
Output is correct |
3 |
Execution timed out |
1105 ms |
75120 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
35 ms |
18092 KB |
Output is correct |
2 |
Execution timed out |
1099 ms |
76396 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
48 ms |
18220 KB |
Output is correct |
2 |
Execution timed out |
1081 ms |
73840 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
34 ms |
18212 KB |
Output is correct |
2 |
Correct |
35 ms |
18168 KB |
Output is correct |
3 |
Correct |
35 ms |
18120 KB |
Output is correct |
4 |
Correct |
116 ms |
24856 KB |
Output is correct |
5 |
Correct |
132 ms |
24636 KB |
Output is correct |
6 |
Correct |
109 ms |
23976 KB |
Output is correct |
7 |
Correct |
110 ms |
24916 KB |
Output is correct |
8 |
Correct |
107 ms |
24528 KB |
Output is correct |
9 |
Correct |
114 ms |
25252 KB |
Output is correct |
10 |
Correct |
113 ms |
25252 KB |
Output is correct |
11 |
Correct |
122 ms |
25196 KB |
Output is correct |
12 |
Correct |
115 ms |
24916 KB |
Output is correct |
13 |
Correct |
112 ms |
24792 KB |
Output is correct |
14 |
Correct |
124 ms |
25256 KB |
Output is correct |
15 |
Correct |
37 ms |
18140 KB |
Output is correct |
16 |
Correct |
37 ms |
18140 KB |
Output is correct |
17 |
Execution timed out |
1105 ms |
75120 KB |
Time limit exceeded |
18 |
Halted |
0 ms |
0 KB |
- |