道理我都懂,但是MLE是什么鬼
  • 板块P1194 买礼物
  • 楼主MinLand
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/15 14:00
  • 上次更新2024/10/15 18:33:16
查看原帖
道理我都懂,但是MLE是什么鬼
1062532
MinLand楼主2024/10/15 14:00

除了前两点全部MLE,数组开大了?

记录

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

const int B = 500 + 114;

int a, b;
int fa[B];
int fnd(int x) {
	if (fa[x] == x)
		return fa[x];
	else return fa[x] = fnd(x);
}
struct Edge {
	int x, y, w;
	bool operator<(const Edge&E)const {
		return E.w > w;
	}
} edge[B * B / 2];
int idx = 0;
long long ans = 0, k = 0;
int main() {
	cin >> a >> b;
	if (b == 1) {
		cout << a << endl;
		return 0;
	}
	int m;
	for (int i = 1; i <= b; i++) fa[i] = i;
	for (int i = 1; i <= b; i++) {
		for (int j = 1; j <= b; j++) {
			cin >> m;
			if (j > i && m != 0) {
				edge[++idx].w = m;
				edge[idx].y = j;
				edge[idx].x = i;
			}
		}
	}
	sort(edge + 1, edge + idx + 1);

	for (int i = 1; i <= idx; i++) {
		int x = edge[i].x, y = edge[i].y, w = edge[i].w;
		int r1 = fnd(x), r2 = fnd(y);
		if (r1 == r2) continue;

		k++, fa[r1] = r2;
		ans += w;
	}
	if (k == b - 1) cout << ans + a;
	else cout << ans + (b - k)*a;
	return 0;
##### }
2024/10/15 14:00
加载中...