#include <bits/stdc++.h>
#include <utility>
using namespace std;
class Kaupunki
{
public:
    bool pelto;
    int satamaan;
    vector<pair<Kaupunki, int>> naapurit;
    Kaupunki()
    {
        pelto = false;
        satamaan = 0x7FFFFFFF;
    }
    void lisaaNaapuri(Kaupunki itse, Kaupunki kaupunki, int etaisyys, bool takaisin)
    {
        if (pelto)
        {
            int matkaSatamaan = kaupunki.satamaan != 0x7FFFFFFF ? kaupunki.satamaan + etaisyys : 0x7FFFFFFF;
            if (matkaSatamaan < satamaan)
            {
                satamaan = matkaSatamaan;
                for (pair<Kaupunki, int> polku : naapurit)
                {
                    int pituus = matkaSatamaan + polku.second;
                    if (polku.first.satamaan > pituus)
                        polku.first.paivitaEtaisyysSatamaan(pituus);
                }
            }
        }
        pair<Kaupunki, int> polku = pair(kaupunki, etaisyys);
        naapurit.push_back(polku);
        if (takaisin)
            kaupunki.lisaaNaapuri(kaupunki, itse, etaisyys, false);
    }
    void paivitaEtaisyysSatamaan(int etaisyys)
    {
        satamaan = etaisyys;
        for (pair<Kaupunki, int> yhteys : naapurit)
        {
            int pituus = etaisyys + yhteys.second;
            if (yhteys.first.satamaan > pituus)
                yhteys.first.paivitaEtaisyysSatamaan(pituus);
        }
    }
};
vector<string> split(string teksti, int pituus)
{
    vector<string> jaettu(pituus);
    string osa;
    int pituus = teksti.length();
    for (int i = 0; i < pituus; i++)
    {
        char nykyinen = teksti[i];
        if (nykyinen == ' ')
        {
            jaettu.push_back(osa);
            osa = "";
        }
        else
        {
            osa += nykyinen;
        }
    }
    jaettu.push_back(osa);
    return jaettu;
}
int main()
{
    int n;
    std::cin >> n;
    string pellotRaw;
    cin >> pellotRaw;
    Kaupunki kaupungit[n];
    string onko;
    cin >> onko;
    vector<string> satamat = split(onko, n);
    for (int i = 0; i < n; i++)
    {
        kaupungit[i] = Kaupunki();
        kaupungit[i].pelto = satamat.at(i)[0] == '1';
    }
    for (int i = 0; i < n - 1; i++)
    {
        string matkat;
        cin >> matkat;
        vector<string> syote = split(matkat, 3);
        int kaupunki1Id = stoi(syote.at(0)) - 1;
        int kaupunki2Id = stoi(syote[1]) - 1;
        kaupungit[kaupunki1Id].lisaaNaapuri(kaupungit[kaupunki1Id], kaupungit[kaupunki2Id], stoi(syote[2]), true);
    }
    int yhteensa = 0;
    for (int i = 0; i < n; i++)
    {
        yhteensa += kaupungit[i].satamaan;
    }
    cout << yhteensa;
}