Pagini recente »
Istoria paginii utilizator/iacob_alin
|
Istoria paginii utilizator/mindrescualbert
|
Istoria paginii utilizator/dcristi
|
Istoria paginii utilizator/trai112
|
Cod sursă (job #353175)
Cod sursă (job
#353175)
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#define nmax 1001
#define mmax 101001
using namespace std;
ifstream fin("zapada.in");
ofstream fout("zapada.out");
int n,m,k;
struct Muchie
{
int x,y,c;
};
int a[nmax];
Muchie L[mmax];
void unific(int c1, int c2)
{
int f=min(a[c1],a[c2]);
int g=max(a[c1],a[c2]);
for(int i=1;i<=n;i++)
if(a[i]==g)
a[i]=f;
}
int criteriu(Muchie a, Muchie b)
{
return a.c<b.c;
}
int main()
{
fin>>n>>m>>k;
for(int i=1;i<=m;i++)
fin>>L[i].x>>L[i].y>>L[i].c;
for(int l=1;l<=k+1;l++)
{
sort(L+1,L+1+m,criteriu);
for(int i=1;i<=n;i++)
a[i]=i;
int i=1,nr=n-1,costmin=0;
while(nr>0)
{
if(a[L[i].x]!=a[L[i].y])
{
costmin+=L[i].c;
unific(L[i].x,L[i].y);
nr--;
}
i++;
}
fout<<costmin<<'\n';
m++;
fin>>L[m].x>>L[m].y>>L[m].c;
}
return 0;
}