求求各位大佬帮帮我这个菜鸟,所有的数据都RE了,感激不尽
  • 板块P2121 拆地毯
  • 楼主ANNII
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/5/26 18:13
  • 上次更新2023/10/28 00:35:36
查看原帖
求求各位大佬帮帮我这个菜鸟,所有的数据都RE了,感激不尽
707250
ANNII楼主2022/5/26 18:13
  
#define MAX 0x7fffff
  
#define MAX_NUM 10000 
  
using namespace std;
  
int n;
  
int m;
  
int k;
  
int area[MAX_NUM] = { 0 };
  
int num = 0;
  
int beauty = 0;

struct Edgetype {
  
	int from;
  
	int to;
  
	int weight;
  
};
  
Edgetype bian[MAX_NUM];
  
void input() {
  
	for (int j= 1; j <= m; j++) {
                         
		Edgetype temp;
                         
		int i;
                         
		int k;
                         
	cin >>temp.from>> temp.to >> temp.weight;
  
	for (i = 1; i <= num; i++) {
                                               if (temp.weight > bian[i].weight) {
  
	     for (k = num+1; k >i; k--) {
  
		bian[k] = bian[k - 1];
  
				}
  
				bian[i] = temp;
  
				num++;
  
			}
  
		}
  
		if (i == num+1)bian[++num] = temp;
  
	}
  
}
  
int findroot(int v) {
  
	int t = v;
  
	while (area[t] > -1) {
  
		t = area[t];
  
	}
  
	return t;
  
}
  
void kruskal() {
  
	int opp = 0;
  
	for (int i = 1; i <= m; i++) {
                          
		int vex1 = findroot(bian[i].from);
                          
		int vex2 = findroot(bian[i].to);
                          
		if (vex1 != vex2) {
                          
			opp++;
                          
			area[vex2] = vex1;
                          
			beauty += bian[i].weight;
                          
			if (opp == k )return;
                          
		}
                          
	}
                          
}
                          
int main(){
                          
	cin >> n >> m >> k;
  
	for (int i = 1; i <= n; i++)
                          
		area[i] = -1;
                          
	input();
                          
	kruskal();
                          
	cout << beauty;
                  
	return 0;
                  
}```
2022/5/26 18:13
加载中...