Pagini recente »
Cod sursă (job #811882)
|
Borderou de evaluare (job #221330)
|
Borderou de evaluare (job #255087)
|
Cod sursă (job #639355)
|
Cod sursă (job #811888)
Cod sursă (job
#811888)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("zapada.in");
ofstream out("zapada.out");
int n, m, k;
pair<int, pair<int, int>> v[100005];
int tata[10005];
int dim[10005];
int rad(int x)
{
if(x == tata[x])
{
return x;
}
int r = rad(tata[x]);
tata[x] = r;
return r;
}
void unire(int x, int y)
{
int rx = rad(x);
int ry = rad(y);
if(rx == ry)
{
return;
}
if(dim[ry] > dim[rx])
{
swap(rx, ry);
}
tata[ry] = rx;
dim[rx] += dim[ry];
}
int check(int x, int y)
{
return (rad(x) == rad(y));
}
int main()
{
in>>n>>m>>k;
int x, y, z;
for(int i = 1; i<=m; i++)
{
in>>x>>y>>z;
v[i] = {z, {x, y}};
}
sort(v + 1, v + m + 1);
int cnt = 0;
for(int i = 1; i<=m; i++)
{
if(cnt == 0)
{
break;
}
pair<int, pair<int, int>> it = v[i];
if(check(it.second.first, it.second.second) == 0)
{
unire(it.second.first, it.second.second);
cnt--;
}
}
return 0;
}