Pagini recente » Cod sursa (job #1575026) | Cod sursa (job #1439957) | Cod sursa (job #1341068) | Cod sursa (job #84852) | Cod sursa (job #2328025)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("apm.in");
ofstream out("apm.out");
struct muchie{
int x,y,cost,exists;
};
vector <muchie> muchii;
bool conditie(muchie i,muchie j){
if(i.cost<j.cost)
return true;
else
return false;
}
int belongs[200001];
int main()
{
int N,M,i,x,y,c;
muchie a;
a.x=0;
a.y=0;
a.cost=-1001;
in>>N>>M;
muchii.push_back(a);
for(i=0;i<M;i++)
{
in>>x>>y>>c;
a.cost=c;
a.x=x;
a.y=y;
a.exists=0;
muchii.push_back(a);
}
int j;
sort(muchii.begin(),muchii.end(),conditie);
int suma=0;
for(i=1;i<=M;i++)
{
if(belongs[muchii[i].x]!=belongs[muchii[i].y]){
if(belongs[muchii[i].x]!=0&&belongs[muchii[i].y]!=0)
{
int remember=belongs[muchii[i].x];
for(j=1;j<=M;j++){
if(belongs[j]==remember)
belongs[j]=belongs[muchii[i].y];
}
}
else
{
if(belongs[muchii[i].x]==0)
belongs[muchii[i].x]=belongs[muchii[i].y];
if(belongs[muchii[i].y]==0)
belongs[muchii[i].y]=belongs[muchii[i].x];
}
muchii[i].exists=1;
suma+=muchii[i].cost;
}
if(belongs[muchii[i].x]==0){
belongs[muchii[i].x]=belongs[muchii[i].y]=i;
suma+=muchii[i].cost;
muchii[i].exists=1;
}
}
out<<suma<<"\n";
for(i=1;i<=M;i++){
if(muchii[i].exists)
{
out<<muchii[i].x<<" "<<muchii[i].y<<" "<<muchii[i].cost<<"\n";
}
}
return 0;
}