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...