Submission #1222427

#TimeUsernameProblemLanguageResultExecution timeMemory
1222427nguyenvanhieu812009Sjekira (COCI20_sjekira)C++20
0 / 110
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 10 + 1; struct cmp { int idx, value; }; bool sapxep(cmp a, cmp b) { return a.value > b.value; } int n; cmp t[maxn]; int a[maxn][maxn]; void dfs(int u, int &ans, vector<bool> &visited) { visited[u] = true; for (int i = 1; i <= n; i++) { if (!a[u][i] || visited[i]) continue; for(int k =1; k<=n;k++) if(i == t[k].idx) { ans = max(ans, t[k].value); break; } //ans = max(ans, t[i].value); dfs(i, ans, visited); } } void solve() { cin >> n; for (int i = 1; i <= n; i++) { cin >> t[i].value; t[i].idx = i; } sort(t + 1, t + 1 + n, sapxep); for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; a[u][v] = 1; a[v][u] = 1; } int res = 0; for (int i = 1; i <= n; i++) { int check = 0; for (int u = 1; u <= n; u++) { if (!a[t[i].idx][u]) continue; check = 1; } if (!check) continue; for (int j = 1; j <= n; j++) { if (!a[t[i].idx][j]) continue; a[t[i].idx][j] = 0; a[j][t[i].idx] = 0; int ans1 = t[i].value; int ru = 0; for (int k = 1; k <= n; k++) { if (j == t[k].idx) ru = t[k].value; } int ans2 = ru; vector<bool> visited(n + 1, false); dfs(t[i].idx, ans1, visited); fill(visited.begin(),visited.end(),false); visited.assign(n + 1, false); dfs(j, ans2, visited); res += ans1 + ans2; } } cout << res << '\n'; } int main() { solve(); 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...