import
java.util.*;
public
class
Main {
static
Set<Integer> vis =
new
HashSet<>();
static
List<List<Integer> > graph =
new
ArrayList<>();
public
static
int
dfs(
int
v, List<Integer> arr)
{
int
val = arr.get(v -
1
);
vis.add(v);
for
(
int
n : graph.get(v)) {
if
(!vis.contains(n)) {
val = Math.max(val, dfs(n, arr));
}
}
return
val;
}
public
static
long
poisonTheGarden(
int
n,
int
m, List<Integer> arr,
List<List<Integer> > connected)
{
long
ans =
0
;
graph =
new
ArrayList<>(n +
1
);
for
(
int
i =
0
; i <= n; i++) {
graph.add(
new
ArrayList<>());
}
for
(
int
i =
0
; i < m; i++) {
int
x = connected.get(i).get(
0
);
int
y = connected.get(i).get(
1
);
graph.get(x).add(y);
graph.get(y).add(x);
}
vis.clear();
for
(
int
i =
1
; i <= n; i++) {
if
(!vis.contains(i)) {
vis.add(i);
ans += dfs(i, arr);
}
}
return
ans;
}
public
static
void
main(String[] args)
{
int
N =
5
, M =
2
;
List<Integer> arr = Arrays.asList(
2
,
3
,
4
,
5
,
6
);
List<List<Integer> > connected = Arrays.asList(
Arrays.asList(
1
,
5
), Arrays.asList(
3
,
4
));
System.out.println(
poisonTheGarden(N, M, arr, connected));
}
}