Pagini recente » Cod sursa (job #2230342) | Cod sursa (job #1108934) | Cod sursa (job #362568) | Cod sursa (job #112968) | Cod sursa (job #608213)
Cod sursa(job #608213)
# include <algorithm>
# include <cstdio>
using namespace std;
typedef long long ll;
const char *FIN = "lazy.in", *FOU = "lazy.out";
const int MAX = 200005;
struct vec {
int a, b, ind;
ll c1, c2;
} V[MAX];
int N, M, T[MAX];
struct comp {
bool operator () (const vec &X, const vec &Y) {
if (X.c1 == Y.c1) return X.c2 < Y.c2;
return X.c1 < Y.c1;
}
};
int search (int X) {
if (X != T[X]) T[X] = search (T[X]);
return T[X];
}
int main (void) {
freopen (FIN, "r", stdin);
freopen (FOU, "w", stdout);
scanf ("%d %d", &N, &M);
for (int i = 1; i <= M; ++i) {
scanf ("%d %d %lld %lld", &V[i].a, &V[i].b, &V[i].c1, &V[i].c2);
V[i].ind = i;
}
sort (V + 1, V + M + 1, comp ());
for (int i = 1; i <= N; ++i) T[i] = i;
for (int i = 1; i <= M; ++i) {
if (search (V[i].a) != search (V[i].b)) {
if (i & 1) T[T[V[i].a]] = T[V[i].b];
else T[T[V[i].b]] = T[V[i].a];
printf ("%d\n", V[i].ind);
}
}
}