Pagini recente » Cod sursa (job #241114) | Cod sursa (job #2632782) | Cod sursa (job #3217090) | Cod sursa (job #2887707) | Cod sursa (job #549144)
Cod sursa(job #549144)
#include <cstdio>
#include <algorithm>
using namespace std;
struct muchie
{
int i, j, index;
long long c1, c2;
friend bool operator < (const muchie &a, const muchie &b)
{
if (a.c1 < b.c1)
return true;
else
if (a.c1 == b.c1 && a.c2 > b.c2)
return true;
return false;
}
};
muchie v[200005];
int n, m, t[200005];
int radacina(int x)
{
int y = x, tmp;
while (t[x])
x = t[x];
while (t[y]) //smecherie tare
tmp = t[y], t[y] = x, y = tmp;
return x;
}
int main()
{
FILE *f = fopen("lazy.in", "r");
fscanf(f, "%d%d", &n, &m);
for (int i = 1; i <= m; ++i)
fscanf(f, "%d%d%lld%lld", &v[i].i, &v[i].j, &v[i].c1, &v[i].c2), v[i].index = i;
fclose(f);
sort(v+1, v+m+1);
f = fopen("lazy.out", "w");
for (int i = 1, nr = 0; i <= m && nr <= (n-1); ++i)
{
int ri = radacina(v[i].i), rj = radacina(v[i].j);
if (ri != rj)
t[ri] = rj, fprintf(f, "%d\n", v[i].index), ++nr;
}
fclose(f);
return 0;
}