#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int MOD = 1e9 + 7;
struct Edge {
int u, v, cost;
Edge(int _u, int _v, int _cost) : u(_u), v(_v), cost(_cost) {}
};
bool comp(const Edge& a, const Edge& b) {
return a.cost < b.cost;
}
class UnionFind {
public:
vector<int> parent, rank;
UnionFind(int size) : parent(size), rank(size, 0) {
for (int i = 0; i < size; ++i) parent[i] = i;
}
};
// 这个函数用于构建最小生成树并返回总成本,但不计算不同的最小成本逃脱计划数量
int kruskal(vector<Edge>& edges, int N) {
sort(edges.begin(), edges.end(), comp);
UnionFind uf(N);
int cost = 0;
}
int main() {
// 假设N和K以及每个门的成本已经给定
int N = 5; // 行数
int K = 5; // 列数
vector<Edge> edges;
}