#include <iostream>
#include<vector>
#include<climits>
using namespace std;
int findMinVertex(vector<int> &key,vector<bool> &mst,int n){
    int minVertex = INT_MAX , minIndex = -1;
    for(int v=0;v<n;v++){
        if(!mst && key[v]<minVertex){
            minVertex = key[v];
            minIndex = v;
        }
    }
    return minIndex;
}
void solve(vector<vector<int>> &graph,int n){
    vector<int> parent(n,-1);
    vector<int> key(n,INT_MAX);
    vector<bool> mst(n,false);
    key[0]=0;
    for(int count=1;count<n;count++){
       int u = findMinVertex(key,mst,n);
       mst[u] = true;
       for(int v=0;v<n;v++){
           if(graph[u][v] && !mst[v] && graph[u][v]<key[v]){
               key[v] = graph[u][v];
               parent[v] = u;
           }
       }
    }
    int total=0;
    for(int i=0;i<n;i++){
        total += graph[i][parent[i]];
    }
    cout<<total<<endl;
}
int main() {
    int n=7;
    vector<vector<int>> graph={
        {0,28,0,0,0,10,0},
        {28,0,16,0,0,0,14},
        {0,16,0,23,0,0,0},
        {0,0,23,0,18,0,25},
        {0,0,0,18,0,22,0},
        {10,0,0,0,22,0,0},
        {0,14,0,25,0,0,0}
    };
    solve(graph,n);
    return 0;
}