Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- const int M = 2222222;
- const int N = 111111;
- struct Edge {
- int u, v, weight;
- bool operator< (const Edge & q) const {
- return weight < q.weight;
- }
- } t[M];
- int p[N], n, m, ans;
- int find_set(int x) {
- if (x == p[x]) {
- return x;
- } else {
- return p[x] = find_set(p[x]);
- }
- }
- void unite(const Edge & e) {
- int u = find_set(e.u);
- int v = find_set(e.v);
- if (u != v) {
- p[u] = v;
- ans += e.weight;
- }
- }
- int main() {
- scanf("%d%d", &n, &m);
- for (int i = 1; i <= n; ++i) {
- p[i] = i;
- }
- for (int i = 0; i < m; ++i) {
- scanf("%d%d%d", &t[i].u, &t[i].v, &t[i].weight);
- }
- std::sort(t, t + m);
- for (int i = 0; i < m; ++i) {
- unite(t[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment