제출 #1223375

#제출 시각아이디문제언어결과실행 시간메모리
1223375nguyenvanhieu812009Sjekira (COCI20_sjekira)C++20
40 / 110
622 ms589824 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; long long t[maxn]; // Changed to long long int r[maxn]; long long res = 0; // Changed to long long vector<int> a[maxn]; struct cmp { int u, v; long long w; // Changed to long long }; cmp e[maxn]; bool sapxep(cmp a, cmp b) { return a.w < b.w; } void dsu(int u, int v) { int ru = r[u]; int rv = r[v]; if (ru != rv) { if (t[ru] < t[rv]) swap(ru, rv); res += t[ru] + t[rv]; for (int x : a[rv]) { a[ru].push_back(x); r[x] = ru; } } } int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> t[i]; r[i] = i; a[i].push_back(i); } for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; e[i] = {u, v, max(t[u], t[v])}; // max now returns long long } sort(e + 1, e + n, sapxep); for (int i = 1; i < n; i++) { dsu(e[i].u, e[i].v); } cout << res << endl; 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...