Pagini recente » Cod sursa (job #1620406) | Cod sursa (job #1461977) | Cod sursa (job #1347094) | Cod sursa (job #2383319) | Cod sursa (job #1296164)
#include<fstream>
#include<iostream>
#include<set>
#include<vector>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
const int NMAX = 100000;
vector<int> v[NMAX + 100];
vector<int> cost[NMAX + 100];
set< pair<int,int> > heap;
int viz[NMAX + 100],n,m;
long long sol;
void read()
{
in>>n>>m;
int a,b,c;
for(int i = 1 ; i <= m ; i++){
in>>a>>b>>c;
v[a].push_back(b);
v[b].push_back(a);
cost[a].push_back(c);
cost[b].push_back(c);
}
in.close();
}
void arb_part()
{
int act = 1,nod = 1,nou;
viz[1] = 1;
while(nod != n){
for(int i = 0 ; i < v[act].size() ; i++)
if(!viz[v[act][i]])
heap.insert(make_pair(cost[act][i],v[act][i]));
while(viz[(*heap.begin()).second])
heap.erase(heap.begin());
if(!heap.empty()){
nou = (*heap.begin()).second;
sol += (*heap.begin()).first;
viz[nou] = 1;
act = nou;
nod++;
heap.erase(heap.begin());
}
}
out<<sol;
out.close();
}
int main()
{
read();
arb_part();
return 0;
}