Pagini recente » Cod sursa (job #125166) | Cod sursa (job #3175809) | Cod sursa (job #525736) | Cod sursa (job #25403) | Cod sursa (job #549157)
Cod sursa(job #549157)
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long
#define DIM 200002
struct muchie
{
int u, v, index;
long long c1, c2;
bool friend 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;
}
}muchii[DIM];
int n,m, t[DIM];
void read()
{
FILE *f = fopen("lazy.in", "r");
fscanf(f, "%d%d", &n, &m);
int u, v;
ll c1, c2;
for(int i = 1; i <= m; ++i)
{
fscanf(f, "%d%d%lld%lld", &u, &v, &c1, &c2);
muchii[i].u = u;
muchii[i].v = v;
muchii[i].index = i;
muchii[i].c1 = c1;
muchii[i].c2 = c2;
}
fclose(f);
}
int rad(int i)
{
if (t[i] != i)
t[i] = rad(t[i]);
return t[i];
}
void kruskal()
{
for (int i = 1; i <= n; ++i) t[i] = i;
sort(muchii+1, muchii+1+m);
FILE *f = fopen("lazy.out", "w");
for (int i = 1, nr = 0; i <= m && nr <= n-1; ++i)
{
int r1 = rad(muchii[i].u), r2 = rad(muchii[i].v);
if (r1 != r2)//muchie in apm
{
t[r1] = r2;
fprintf(f, "%d\n", muchii[i].index);
}
}
fclose(f);
}
int main()
{
read();
kruskal();
return 0;
}