//分别计算红色药剂和蓝色药剂的最小价格a[i]和blue[k],取最小价格相加
#include <stdio.h>
int main() {
    int n, result = 0;
    scanf("%d", &n);
    int min[n], a[n], b[n], c[n], blue[n];
    //min[n]是最小价格数组,a[n]是红色药剂的价格,blue[n]是蓝色药剂的价格
    for(int i=0; i<n; i++){
        scanf("%d", &a[i]);//输入n种红色药剂的价格
    }
    for(int j=0; j<n; j++){
        scanf("%d %d", &b[j], &c[j]);//输入红色药剂合成蓝色药剂编号
    }
    for(int k=0; k<n; k++){
        blue[k] = a[b[k]-1] + a[c[k]-1];//计算蓝色药剂的价格,注意下标
        if(blue[k] < a[k]){//min[n]存最小价格
            min[k] = blue[k];
        }
        else{
            min[k] = a[k];
        }
        result += min[k];//计算最小花费
    }
    printf("%d\n", result);
    return 0;
}