Pagini recente »
Cod sursă (job #720133)
|
Istoria paginii utilizator/lifofifou
|
Profil MusatAlexandru
|
Cod sursă (job #720134)
|
Cod sursă (job #676001)
Cod sursă (job
#676001)
#include <bits/stdc++.h>
#define N 10005
using namespace std;
ifstream fin("zapada.in");
ofstream fout("zapada.out");
struct muchie
{
int x,y,cost;
bool operator < (const muchie x) const
{
return x.cost>cost;
}
};
int n,m,k,t[N],nrcc,S;
void Union(int x,int y)
{
t[y]=x;
}
int Find(int x)
{
int rad=x,y;
while(t[rad]) rad=t[rad];
/// comnprimam drumurile, adica toate nodurile
/// din traseul de la x la rad se leaga direct de rad
while (x != rad)
{
y = t[x];
t[x] = rad;
x = y;
}
return rad;
}
multiset<muchie>edges;
void Kruskal()
{
nrcc=n;S=0;
for(auto i:edges)
if(nrcc>1)
{
int x=Find(i.x);
int y=Find(i.y);
if(x!=y)
{
Union(x,y);
nrcc--;
S+=i.cost;
}
}
}
int main()
{
int i,x,y,c,k;
fin>>n>>m>>k;
while(m--)
fin>>x>>y>>c,
edges.insert({x,y,c});
Kruskal();
fout<<S<<"\n";
for(i=1;i<=k;i++)
{
fin>>x>>y>>c;memset(t,0,sizeof(t));
edges.insert({x,y,c});
Kruskal();fout<<S<<"\n";
}
return 0;
}