样例 #3 过不了,求条
查看原帖
样例 #3 过不了,求条
453555
qW__Wp楼主2024/11/9 10:24

爆搜。

#include <bits/stdc++.h>
#define int long long
#define INF 0x3fffffff
#define INFF 1e18
#define endl '\n'

using namespace std;

const int N = 10, M = 50;

int U[M], V[M], W[M], fa[N];
int n, m, k, ans = INFF;

int find(int u) {
	return u == fa[u] ? u : fa[u] = find(fa[u]);
}

void dfs(int dep, int lst, int sum) {
	if (dep == n - 1) {
		ans = min(ans, sum);
		return;
	}
	for (int i = lst + 1; i <= m; i ++) {
		int u = find(U[i]), v = find(V[i]), w = W[i];
		if (u == v) continue;
		fa[u] = v;
		dfs(dep + 1, i, (sum + w) % k);
		fa[u] = u;
	}
}

signed main() {
	cin >> n >> m >> k;
	for (int i = 1; i <= m; i ++) {
		cin >> U[i] >> V[i] >> W[i];
	}
	for (int i = 1; i <= n; i ++) fa[i] = i;
	dfs(0, 0, 0);
	cout << ans;
	return 0;
}
2024/11/9 10:24
加载中...