Submission #710151

#TimeUsernameProblemLanguageResultExecution timeMemory
710151PixelCatReconstruction Project (JOI22_reconstruction)C++14
7 / 100
90 ms6812 KiB
#include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define eb emplace_back #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; const int MAXN = 510; const int MAXM = 100010; struct DSU { int p[MAXN]; void init() { memset(p, 0, sizeof(p)); } int find(int n) { if(!p[n]) return n; return p[n] = find(p[n]); } bool uni(int a, int b) { a = find(a); b = find(b); if(a != b) { p[b] = a; return true; } return false; } } dsu; struct Edge { int a, b, w, w2; } ed[MAXM]; int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // =^-w-^= int n, m; cin >> n >> m; For(i, 1, m) { auto &e = ed[i]; cin >> e.a >> e.b >> e.w; } int q; cin >> q; assert(q <= 10); while(q--) { int x; cin >> x; For(i, 1, m) { ed[i].w2 = abs(ed[i].w - x); } sort(ed + 1, ed + m + 1, [&](auto &a, auto &b) { return a.w2 < b.w2; }); int ans = 0; dsu.init(); For(i, 1, m) { auto e = ed[i]; if(dsu.uni(e.a, e.b)) ans += e.w2; } cout << ans << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...