Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #define INFINIT 1000000000
- using namespace std;
- ifstream fin("zapada.in");
- ofstream fout("zapada.out");
- struct muchie
- {
- int i,j,cost,ok;
- };
- int n, m, t[105];
- muchie x[5000];
- int v[5000],aux,K;
- int main()
- {
- fin >> n >> m;
- for(int i = 0 ; i < m ; ++i)
- fin >> x[i].i >> x[i].j >> x[i].cost;
- fin>>K;
- for(int i=0; i<K; i++)
- {
- fin>>aux;
- x[aux-1 ].ok=1;
- }
- for(int i = 0 ; i < m - 1; i ++)
- for(int j = i + 1 ; j < m ; ++j)
- {
- if(x[i].ok<x[j].ok)
- {
- muchie aux=x[i];
- x[i]=x[j];
- x[j]=aux;
- }
- if(x[i].cost > x[j].cost && x[i].ok==x[j].ok)
- {
- muchie aux = x[i];
- x[i] = x[j];
- x[j] = aux;
- }
- }
- for(int i =1 ; i <= n ; ++i)
- t[i] = i;
- int S = 0, cnt = 0;
- for(int i = 0 ; i < m && cnt < n ; i ++)
- if(t[x[i].i] != t[x[i].j] ||x[i].ok==1)
- {
- v[i] = 1;
- S += x[i].cost;
- int ai = t[x[i].i], aj = t[x[i].j];
- for(int j =1 ; j <= n ; ++j)
- if(t[j] == aj)
- t[j] = ai;
- }
- fout << S << "\n";
- /*for(int i = 0 ; i < m ; ++i)
- if(v[i] == 1)
- fout << x[i].i << " " << x[i].j << "\n";*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement