关于 MST 的 MLE
  • 板块学术版
  • 楼主distant_skys
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/8 14:58
  • 上次更新2023/11/4 11:37:38
查看原帖
关于 MST 的 MLE
392380
distant_skys楼主2021/8/8 14:58

LOJ 模板题目

这道题用 Kruskal 一直 MLE ,思路也没有错,为什么

#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 200020
#define M 500020

using namespace std;

struct edge {
    int u, v;
    int w;
} e[M];
int fa[N];
int ans = 0, n, m;

bool cmp(edge a, edge b) {
    return a.w < b.w;
}

int found(int x) {
    return fa[x] == x ? x :  fa[x] == found(fa[x]);
}

int main() {
    cin >> n >> m;

    for (int i = 1; i <= m; i++)
        scanf("%d %d %d", &e[i].u, &e[i].v, &e[i].w);

    sort(e + 1, e + m + 1, cmp);

    for (int i = 1; i <= n; i++)
        fa[i] = i;

    int k = 0;
    int u, v, f, t;

    for (int i = 1; i <= m; i++) {
        if (k == n - 1)
            break;

        u = e[i].u, v = e[i].v;

        if (found(u) != found(v)) {
            k++;
            ans += e[i].w;
            f = found(u), t = found(v);
            fa[f] = t;
        }
    }

    printf("%d\n", ans);
    return 0;
}
2021/8/8 14:58
加载中...