题目链接:https://www.luogu.org/problemnew/show/P1194
思路:
kruskal
值得注意的是如果i==j,那么这条路径就不要存了,在i!=j的情况下,如果k[i][j]==0
说明先买i之后没有对j优惠,那么i到j这条路径应该存为n就是原本每一个礼物的价格。
package 图论;
//ac
//思路kruskal
//值得注意的是如果i==j,那么这条路径就不要存了,在i!=j的情况下,如果k[i][j]==0
//说明先买i之后没有对j优惠,那么i到j这条路径应该存为n就是原本每一个礼物的价格。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class P1194买礼物 {
static int n;
static int m;
static int []p;
static int []rank;
public static void init() {
for(int i=1;i<=m;i++) {
p[i]=-1;
rank[i]=0;
}
}
public static int find_root(int x) {
int x_root=x;
while(p[x_root]!=-1) {
x_root=p[x_root];
}