Untitled
unknown
plain_text
2 years ago
1.9 kB
7
Indexable
package Graph;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
class KhongMinh {
public static int V;
public static int[][] adj;
public static int[] count;
public static int min;
static boolean[] visited;
static boolean check = false;
static int total = 0;
static void DFS(int curv, int strv, int pre, int min, int num1, int num2) {
visited[curv] = true;
for (int i = 0; i < V; i++) {
if (i != pre && adj[curv][i] == 1 && !check) {
int sumGun = count[curv] + count[i];
if (visited[i] && i == strv) {
if (min < sumGun) {
total += min;
adj[num2][num1] = 0;
adj[num1][num2] = 0;
} else {
total += sumGun;
adj[curv][i] = 0;
adj[i][curv] = 0;
}
check = true;
return;
}
if (!visited[i]) {
if (min < sumGun) {
DFS(i, strv, curv, min, num1, num2);
} else {
DFS(i, strv, curv, sumGun, curv, i);
}
}
}
}
}
public static void main(String[] args) throws FileNotFoundException {
System.setIn(new FileInputStream("Text"));
Scanner scanner = new Scanner(System.in);
int tc = scanner.nextInt();
for (int Case = 1; Case <= tc; Case++) {
total = 0;
V = scanner.nextInt();
adj = new int[V][V];
count = new int[V];
visited = new boolean[V];
for (int i = 0; i < V; i++) {
int index = scanner.nextInt();
count[index] = scanner.nextInt();
int gr = scanner.nextInt();
for (int j = 0; j < gr; j++) {
int x = scanner.nextInt();
adj[i][x] = 1;
}
}
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
visited[j]=false;
}
check = false;
min = Integer.MAX_VALUE;
DFS(i, i, i, min, i, i);
if(check){
i--;
}
}
System.out.println(total);
}
}
}
Editor is loading...