CCF CSP 竞赛试题——数据中心(201812-4)

mac2024-03-13  30

并查集和root是哪个节点毫无关系题意为【用权值尽可能小的边,将这n个节点连起来】 #include <iostream> #include <vector> #include <algorithm> using namespace std; vector<int> nodes; int fd(int x) { return nodes[x] = nodes[x] == x ? x : fd(nodes[x]); } int main() { int n, m, root; cin >> n >> m >> root; for (int i = 0; i <= n; ++i) nodes.push_back(i); vector<int> e(3); vector<vector<int> > edge; while (m--) { cin >> e[2] >> e[1] >> e[0]; edge.push_back(e); } sort(edge.begin(), edge.end()); for (int i = 0; i < edge.size(); ++i) { int x = fd(edge[i][1]), y = fd(edge[i][2]); if (x != y) { if (--n == 1) { cout << edge[i][0] << endl; break; } nodes[x] = y; } } return 0; }
最新回复(0)