/// n < k -> cout << -1
/// Author : Nguyễn Thái Sơn - K18 - KHMT - UIT
/// Training ICPC 2024
#include<bits/stdc++.h>
/// #pragma GCC optimize("O3,unroll-loops")
/// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define fi first
#define se second
#define TASK "test"
#define pb push_back
#define EL cout << endl
#define Ti20_ntson int main()
#define in(x) cout << x << endl
#define all(x) (x).begin(),(x).end()
#define getbit(x, i) (((x) >> (i)) & 1)
#define cntbit(x) __builtin_popcount(x)
#define FOR(i,l,r) for (int i = l; i <= r; i++)
#define FORD(i,l,r) for (int i = l; i >= r; i--)
#define Debug(a,n) for (int i = 1; i <= n; i++) cout << a[i] << " "; cout << endl
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> vii;
typedef unsigned long long ull;
typedef vector<vector<int>> vvi;
int fastMax(int x, int y) { return (((y-x)>>(32-1))&(x^y))^y; }
const int N = 5e5 + 5;
const int oo = INT_MAX;
const int mod = 1e9 + 7;
const int d4x[4] = {-1, 0, 1, 0} , d4y[4] = {0, 1, 0, -1};
const int d8x[8] = {-1, -1, 0, 1, 1, 1, 0, -1}, d8y[8] = {0, 1, 1, 1, 0, -1, -1, -1};
int n, a[N], m, k, Color[N];
tuple<int, int, int> Edge[N];
ll Ans = 0;
/// [1, 2, 3, ..., k]
/// Color = 0 co the thay doi tuy y
/// Color[i] = 0 -> Color[i] > k
/// De no khong anh huong toi mau da to ( 1 -> k)
inline void Read_Input() {
cin >> n >> m >> k;
int num = k;
FOR(i, 1, n) {
cin >> Color[i];
if (Color[i] == 0) Color[i] = ++num;
}
if (n < k) {
cout << -1;
exit(0);
}
FOR(i, 1, m) {
int u, v, w;
cin >> u >> v >> w;
Edge[i] = {w, u, v};
}
sort(Edge + 1, Edge + m + 1);
}
struct DSU {
vector<int> par;
void sz(int n) {
par.resize(n + 5, -1);
}
int Find(int u) {
if (par[u] < 0) return u;
par[u] = Find(par[u]);
return par[u];
}
bool Merge(int x, int y) {
x = Find(x);
y = Find(y);
if (x == y) return 0;
if (par[x] > par[y])
swap(x, y);
par[x] += par[y];
par[y] = x;
return 1;
}
}d;
inline void Solve() {
d.sz(k + n);
/// Color[i] = 0 -> Đỉnh i chưa được tô màu
/// Color[i] > 0 -> Đinh i có màu sẵn rồi và ko cần thiết phải quan tâm
/// cnt == k - 1 dung lai qua trinh tim cay khung k mau
int cnt = 0;
FOR(i, 1, m) {
auto[w, u, v] = Edge[i];
if (Color[u] && Color[v]) {
/// mau sac 2 dinh u va v la co dinh
if (d.Merge(Color[u], Color[v]) == true) {
/// Canh nay chac chan tao ra cay khung mau
Ans += w;
cnt++;
}
}
/// k - 1 cạnh sao cho nó hợp lý
/// hợp lý khi và chỉ khi các thằng cùng mau sẽ không nối tới nhau
/// thích màu nào cũng được cho nên vấn đề mà trùng màu sẽ không bao giờ xảy ra
/// TH nay ta luon co the Merge(u -> v) mà không cần quan tâm tính đúng sai của màu
if (cnt == k - 1) {
cout << Ans;
return;
}
}
cout << -1;
}
Ti20_ntson {
// freopen(TASK".INP","r",stdin);
// freopen(TASK".OUT","w",stdout);
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int T = 1;
// cin >> T;
while (T -- ) {
Read_Input();
Solve();
}
}
Ly8vIG4gPCBrICAtPiBjb3V0IDw8IC0xCgoKLy8vIEF1dGhvciA6IE5ndXnhu4VuIFRow6FpIFPGoW4gLSBLMTggLSBLSE1UIC0gVUlUCi8vLyBUcmFpbmluZyBJQ1BDIDIwMjQKCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CgovLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCi8vLyAjcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250IikKCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBUQVNLICJ0ZXN0IgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIEVMIGNvdXQgPDwgZW5kbAojZGVmaW5lIFRpMjBfbnRzb24gaW50IG1haW4oKQojZGVmaW5lIGluKHgpIGNvdXQgPDwgeCA8PCBlbmRsCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCh4KS5lbmQoKQojZGVmaW5lIGdldGJpdCh4LCBpKSAoKCh4KSA+PiAoaSkpICYgMSkKI2RlZmluZSBjbnRiaXQoeCkgX19idWlsdGluX3BvcGNvdW50KHgpCiNkZWZpbmUgRk9SKGksbCxyKSBmb3IgKGludCBpID0gbDsgaSA8PSByOyBpKyspCiNkZWZpbmUgRk9SRChpLGwscikgZm9yIChpbnQgaSA9IGw7IGkgPj0gcjsgaS0tKQojZGVmaW5lIERlYnVnKGEsbikgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjb3V0IDw8IGFbaV0gPDwgIiAiOyBjb3V0IDw8IGVuZGwKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHZpaTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gdnZpOwppbnQgZmFzdE1heChpbnQgeCwgaW50IHkpIHsgcmV0dXJuICgoKHkteCk+PigzMi0xKSkmKHheeSkpXnk7IH0KCmNvbnN0IGludCBOID0gNWU1ICsgNTsKY29uc3QgaW50IG9vID0gSU5UX01BWDsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBkNHhbNF0gPSB7LTEsIDAsIDEsIDB9ICwgZDR5WzRdID0gezAsIDEsIDAsIC0xfTsKY29uc3QgaW50IGQ4eFs4XSA9IHstMSwgLTEsIDAsIDEsIDEsIDEsIDAsIC0xfSwgZDh5WzhdID0gezAsIDEsIDEsIDEsIDAsIC0xLCAtMSwgLTF9OwoKaW50IG4sIGFbTl0sIG0sIGssIENvbG9yW05dOwp0dXBsZTxpbnQsIGludCwgaW50PiBFZGdlW05dOwoKbGwgQW5zID0gMDsKCgovLy8gWzEsIDIsIDMsIC4uLiwga10KCgovLy8gQ29sb3IgPSAwIGNvIHRoZSB0aGF5IGRvaSB0dXkgeQoKLy8vIENvbG9yW2ldID0gMCAtPiBDb2xvcltpXSA+IGsKCi8vLyBEZSBubyBraG9uZyBhbmggaHVvbmcgdG9pIG1hdSBkYSB0byAoIDEgLT4gaykKCgoKaW5saW5lIHZvaWQgUmVhZF9JbnB1dCgpIHsKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKCiAgICBpbnQgbnVtID0gazsKCiAgICBGT1IoaSwgMSwgbikgewogICAgICAgIGNpbiA+PiBDb2xvcltpXTsKICAgICAgICBpZiAoQ29sb3JbaV0gPT0gMCkgQ29sb3JbaV0gPSArK251bTsKICAgIH0KCiAgICBpZiAobiA8IGspIHsKICAgICAgICBjb3V0IDw8IC0xOwogICAgICAgIGV4aXQoMCk7CiAgICB9CgogICAgRk9SKGksIDEsIG0pIHsKICAgICAgICBpbnQgdSwgdiwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgRWRnZVtpXSA9IHt3LCB1LCB2fTsKICAgIH0KCiAgICBzb3J0KEVkZ2UgKyAxLCBFZGdlICsgbSArIDEpOwoKfQoKc3RydWN0IERTVSB7CiAgICB2ZWN0b3I8aW50PiBwYXI7CgogICAgdm9pZCBzeihpbnQgbikgewogICAgICAgIHBhci5yZXNpemUobiArIDUsIC0xKTsKICAgIH0KCiAgICBpbnQgRmluZChpbnQgdSkgewogICAgICAgIGlmIChwYXJbdV0gPCAwKSByZXR1cm4gdTsKICAgICAgICBwYXJbdV0gPSBGaW5kKHBhclt1XSk7CiAgICAgICAgcmV0dXJuIHBhclt1XTsKICAgIH0KCiAgICBib29sIE1lcmdlKGludCB4LCBpbnQgeSkgewogICAgICAgIHggPSBGaW5kKHgpOwogICAgICAgIHkgPSBGaW5kKHkpOwogICAgICAgIGlmICh4ID09IHkpIHJldHVybiAwOwogICAgICAgIGlmIChwYXJbeF0gPiBwYXJbeV0pCiAgICAgICAgICAgIHN3YXAoeCwgeSk7CiAgICAgICAgcGFyW3hdICs9IHBhclt5XTsKICAgICAgICBwYXJbeV0gPSB4OwogICAgICAgIHJldHVybiAxOwogICAgfQp9ZDsKCmlubGluZSB2b2lkIFNvbHZlKCkgewogICAgZC5zeihrICsgbik7CiAgICAvLy8gQ29sb3JbaV0gPSAwICAtPiDEkOG7iW5oIGkgY2jGsGEgxJHGsOG7o2MgdMO0IG3DoHUKCiAgICAvLy8gQ29sb3JbaV0gPiAwICAtPiDEkGluaCBpIGPDsyBtw6B1IHPhurVuIHLhu5NpIHbDoCBrbyBj4bqnbiB0aGnhur90IHBo4bqjaSBxdWFuIHTDom0KCiAgICAvLy8gY250ID09IGsgLSAxIGR1bmcgbGFpIHF1YSB0cmluaCB0aW0gY2F5IGtodW5nIGsgbWF1CgoKICAgIGludCBjbnQgPSAwOwoKICAgIEZPUihpLCAxLCBtKSB7CgogICAgICAgIGF1dG9bdywgdSwgdl0gPSBFZGdlW2ldOwoKCiAgICAgICAgaWYgKENvbG9yW3VdICYmIENvbG9yW3ZdKSB7CgogICAgICAgICAgICAvLy8gbWF1IHNhYyAyIGRpbmggdSB2YSB2IGxhIGNvIGRpbmgKCiAgICAgICAgICAgIGlmIChkLk1lcmdlKENvbG9yW3VdLCBDb2xvclt2XSkgPT0gdHJ1ZSkgewoKICAgICAgICAgICAgICAgIC8vLyBDYW5oIG5heSBjaGFjIGNoYW4gdGFvIHJhIGNheSBraHVuZyBtYXUKCiAgICAgICAgICAgICAgICBBbnMgKz0gdzsKCiAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICAgICAvLy8gayAtIDEgY+G6oW5oIHNhbyBjaG8gbsOzIGjhu6NwIGzDvQoKICAgICAgICAgICAgLy8vIGjhu6NwIGzDvSBraGkgdsOgIGNo4buJIGtoaSBjw6FjIHRo4bqxbmcgY8O5bmcgbWF1IHPhur0ga2jDtG5nIG7hu5FpIHThu5tpIG5oYXUKCiAgICAgICAgICAgIC8vLyB0aMOtY2ggbcOgdSBuw6BvIGPFqW5nIMSRxrDhu6NjIGNobyBuw6puIHbhuqVuIMSR4buBIG3DoCB0csO5bmcgbcOgdSBz4bq9IGtow7RuZyBiYW8gZ2nhu50geOG6o3kgcmEKCiAgICAgICAgICAgIC8vLyBUSCBuYXkgdGEgbHVvbiBjbyB0aGUgTWVyZ2UodSAtPiB2KSBtw6Aga2jDtG5nIGPhuqduIHF1YW4gdMOibSB0w61uaCDEkcO6bmcgc2FpIGPhu6dhIG3DoHUKCgoKICAgICAgICBpZiAoY250ID09IGsgLSAxKSB7CiAgICAgICAgICAgIGNvdXQgPDwgQW5zOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgLTE7Cgp9CgpUaTIwX250c29uIHsKLy8gICAgZnJlb3BlbihUQVNLIi5JTlAiLCJyIixzdGRpbik7Ci8vICAgIGZyZW9wZW4oVEFTSyIuT1VUIiwidyIsc3Rkb3V0KTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGludCBUID0gMTsKLy8gICAgY2luID4+IFQ7CiAgICB3aGlsZSAoVCAtLSApIHsKICAgICAgICBSZWFkX0lucHV0KCk7CiAgICAgICAgU29sdmUoKTsKICAgIH0KfQoKCgo=