#include <bits/stdc++.h>
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define int long long
#define yes() cout << "YES\n"
#define no() cout << "NO\n"
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
const int inf = 1e18;
const int mod = 1e9 + 7;
const int maxn = 1e6;
const int mod1 = 998244353;
const int mod2 = 1e18 + 1;
const int mod3 = 1e9 + 9;
const int mod4 = 333333333;
const int mod5 = 200000;
const int mod6 = 10007;
const int k = 3000;
const int w = 1e5;
const ld EPS = 1e-8;
int LOG = 30;
struct DSU {
vector<int> p, sz;
int n, prime;
DSU(int x) {
n = x, prime = x;
p.assign(n, 0);
sz.assign(n, 1);
iota(all(p), 0ll);
}
int get(int x) {
if (p[x] == x) return x;
return p[x] = get(p[x]);
}
bool check(int a, int b) {
return get(a) == get(b);
}
void unite(int a, int b) {
a = get(a), b = get(b);
if (a == b) return;
prime--;
if (sz[a] < sz[b]) swap(a, b);
p[b] = a;
sz[a] += sz[b];
}
};
struct e {
int u, v, w;
};
void solve() {
int n, m;
cin >> n >> m;
vector<e> g;
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
u--, v--;
g.push_back({u, v, w});
}
int q;
cin >> q;
while (q--) {
int x;
cin >> x;
vector<e> g1 = g;
sort(all(g1), [&](e a, e b) {
return abs(a.w - x) < abs(b.w - x);
});
DSU dsu(n);
int ans = 0;
for (auto& [u, v, w] : g1) {
if (dsu.check(u, v)) continue;
dsu.unite(u, v);
ans += abs(x - w);
if (dsu.prime == 1) break;
}
cout << ans << "\n";
}
}
signed main() {
// cout.precision(16);
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |