/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static List<List<Integer>> graph;
static boolean[] visited;
static boolean[] isGreen;
static int greenCount;
static int componentSize;
static void dfs(int node) {
visited[node] = true;
componentSize++;
if (isGreen[node]) {
greenCount++;
}
for (int neighbour : graph.get(node)) {
if (!visited[neighbour]) {
dfs(neighbour);
}
}
}
public static int solve(int n, int[][] edges, boolean[] greenNodes) {
int m = edges.length;
isGreen = greenNodes;
int finalAnswer
= Integer.
MAX_VALUE;
for (int x = 1; x <= n; x++) {
graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}
for (int i = 0; i < m; i++) {
int u = edges[i][0];
int v = edges[i][1];
if (u == x || v == x) continue;
graph.get(u).add(v);
graph.get(v).add(u);
}
visited = new boolean[n + 1];
int answer = 0;
for (int i = 1; i <= n; i++) {
if (i == x) continue;
if (!visited[i]) {
greenCount = 0;
componentSize = 0;
dfs(i);
if (greenCount >= 1) {
answer += componentSize;
}
}
}
finalAnswer
= Math.
min(finalAnswer, answer
); }
return finalAnswer;
}
public static void main
(String[] args
) {
int n = 5;
int[][] edges = {
{1, 2},
{2, 3},
{3, 4},
{4, 5}
};
boolean[] greenNodes = new boolean[n + 1];
greenNodes[2] = true;
greenNodes[5] = true;
int result = solve(n, edges, greenNodes);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXN0YXRpYyBMaXN0PExpc3Q8SW50ZWdlcj4+IGdyYXBoOwogICAgc3RhdGljIGJvb2xlYW5bXSB2aXNpdGVkOwogICAgc3RhdGljIGJvb2xlYW5bXSBpc0dyZWVuOwoKICAgIHN0YXRpYyBpbnQgZ3JlZW5Db3VudDsKICAgIHN0YXRpYyBpbnQgY29tcG9uZW50U2l6ZTsKCiAgIAogICAgc3RhdGljIHZvaWQgZGZzKGludCBub2RlKSB7CiAgICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7CiAgICAgICAgY29tcG9uZW50U2l6ZSsrOwoKICAgICAgICBpZiAoaXNHcmVlbltub2RlXSkgewogICAgICAgICAgICBncmVlbkNvdW50Kys7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCBuZWlnaGJvdXIgOiBncmFwaC5nZXQobm9kZSkpIHsKICAgICAgICAgICAgaWYgKCF2aXNpdGVkW25laWdoYm91cl0pIHsKICAgICAgICAgICAgICAgIGRmcyhuZWlnaGJvdXIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgaW50IHNvbHZlKGludCBuLCBpbnRbXVtdIGVkZ2VzLCBib29sZWFuW10gZ3JlZW5Ob2RlcykgewoKICAgICAgICBpbnQgbSA9IGVkZ2VzLmxlbmd0aDsKICAgICAgICBpc0dyZWVuID0gZ3JlZW5Ob2RlczsKICAgICAgICBpbnQgZmluYWxBbnN3ZXIgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKCiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgeCA9IDE7IHggPD0gbjsgeCsrKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICBncmFwaCA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgICAgIGdyYXBoLmFkZChuZXcgQXJyYXlMaXN0PD4oKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgICAgICAgICBpbnQgdSA9IGVkZ2VzW2ldWzBdOwogICAgICAgICAgICAgICAgaW50IHYgPSBlZGdlc1tpXVsxXTsKCiAgICAgICAgICAgICAgICBpZiAodSA9PSB4IHx8IHYgPT0geCkgY29udGludWU7CgogICAgICAgICAgICAgICAgZ3JhcGguZ2V0KHUpLmFkZCh2KTsKICAgICAgICAgICAgICAgIGdyYXBoLmdldCh2KS5hZGQodSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZpc2l0ZWQgPSBuZXcgYm9vbGVhbltuICsgMV07CiAgICAgICAgICAgIGludCBhbnN3ZXIgPSAwOwoKICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgogICAgICAgICAgICAgICAgaWYgKGkgPT0geCkgY29udGludWU7CgogICAgICAgICAgICAgICAgaWYgKCF2aXNpdGVkW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgZ3JlZW5Db3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50U2l6ZSA9IDA7CgogICAgICAgICAgICAgICAgICAgIGRmcyhpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGdyZWVuQ291bnQgPj0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXIgKz0gY29tcG9uZW50U2l6ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZpbmFsQW5zd2VyID0gTWF0aC5taW4oZmluYWxBbnN3ZXIsIGFuc3dlcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmluYWxBbnN3ZXI7CiAgICB9CgogICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCiAgICAgICAgaW50IG4gPSA1OwoKICAgICAgICBpbnRbXVtdIGVkZ2VzID0gewogICAgICAgICAgICB7MSwgMn0sCiAgICAgICAgICAgIHsyLCAzfSwKICAgICAgICAgICAgezMsIDR9LAogICAgICAgICAgICB7NCwgNX0KICAgICAgICB9OwoKICAgICAgICAKICAgICAgICBib29sZWFuW10gZ3JlZW5Ob2RlcyA9IG5ldyBib29sZWFuW24gKyAxXTsKICAgICAgICBncmVlbk5vZGVzWzJdID0gdHJ1ZTsKICAgICAgICBncmVlbk5vZGVzWzVdID0gdHJ1ZTsKCiAgICAgICAgaW50IHJlc3VsdCA9IHNvbHZlKG4sIGVkZ2VzLCBncmVlbk5vZGVzKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocmVzdWx0KTsKICAgIH0KfQ==