main
黄海 2 years ago
parent ae40ca4f4d
commit a8151908a6

@ -113,7 +113,7 @@ int res; // 最小生成树的权值和
int cnt; // 最小生成树的结点数
// Kruskal算法
int kruskal() {
void kruskal() {
// 1、按边权由小到大排序
sort(edge, edge + m);
// 2、并查集初始化
@ -126,8 +126,7 @@ int kruskal() {
p[a] = b, res += c, cnt++; // cnt是指已经连接上边的数量
}
// 4、特判是不是不连通
if (cnt < n - 1) return INF;
return res;
if (cnt < n - 1) res = INF;
}
int main() {
@ -139,8 +138,8 @@ int main() {
cin >> c;
edge[m++] = {i, j, c}; // 加入当前的边
}
int t = kruskal();
cout << t << endl;
kruskal();
cout << res << endl;
return 0;
}
```

@ -24,7 +24,7 @@ int res; // 最小生成树的权值和
int cnt; // 最小生成树的结点数
// Kruskal算法
int kruskal() {
void kruskal() {
// 1、按边权由小到大排序
sort(edge, edge + m);
// 2、并查集初始化
@ -37,8 +37,7 @@ int kruskal() {
p[a] = b, res += c, cnt++; // cnt是指已经连接上边的数量
}
// 4、特判是不是不连通
if (cnt < n - 1) return INF;
return res;
if (cnt < n - 1) res = INF;
}
int main() {
@ -50,7 +49,7 @@ int main() {
cin >> c;
edge[m++] = {i, j, c}; // 加入当前的边
}
int t = kruskal();
cout << t << endl;
kruskal();
cout << res << endl;
return 0;
}

@ -104,7 +104,7 @@ int find(int x) {
}
// Kruskal算法
int kruskal() {
void kruskal() {
// 1、按边权由小到大排序
sort(edge, edge + m);
// 2、并查集初始化
@ -117,8 +117,7 @@ int kruskal() {
p[a] = b, res += c, cnt++; // cnt是指已经连接上边的数量
}
// 4、特判是不是不连通
if (cnt < n - 1) return INF;
return res;
if (cnt < n - 1) res = INF;
}
int main() {
@ -128,11 +127,11 @@ int main() {
cin >> a >> b >> c;
edge[i] = {a, b, c};
}
int t = kruskal();
if (t == INF)
kruskal();
if (res == INF)
puts("impossible");
else
printf("%d\n", t);
printf("%d\n", res);
return 0;
}
```

Loading…
Cancel
Save