Pagini recente » Borderou de evaluare (job #1114574) | Borderou de evaluare (job #2948874) | amb3r_heard | Rezultatele filtrării | Cod sursa (job #523252)
Cod sursa(job #523252)
#include<iostream>
#include<stdio.h>
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
FILE *fin=fopen("war.in", "r");
FILE *fout=fopen("war.out", "w");
int n, p, k, x[110000], y[110000], z[110000], pi[110000]={0}, st[110000], gr[110000], ans, ind[110000];
int grupa(int i)
{
if (gr[i] == i)
return i;
gr[i]=grupa(gr[i]);
return gr[i];
};
void reuniune(int i,int j)
{
gr[grupa(i)] = grupa(j);
}
bool comp(int i, int j)
{
return(z[i]<z[j]);
}
int main()
{
fscanf(fin, "%d %d\n", &n, &p, &k);
for(int i=1;i<=p;i++)
{
scanf("%d %d %d\n", &x[i], &y[i], &z[i]);
ind[i]=i;
}
for(int i=1;i<=n;i++)
gr[i]=i;
sort(ind+1,ind+p+1,comp);
for(int i=1;i<=p;i++)
if (grupa(x[ind[i]])!=grupa(y[ind[i]]))
{
ans+=z[ind[i]];
reuniune(x[ind[i]],y[ind[i]]);
};
fprintf(fout, "%d\n", ans);
fclose(fin);
fclose(fout);
return 0;
};