Cod sursa(job #608212)

Utilizator SpiderManSimoiu Robert SpiderMan Data 15 august 2011 17:39:26
Problema Lazy Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
# 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)) {
            T[T[V[i].a]] = T[V[i].b];
            printf ("%d\n", V[i].ind);
        }
    }
}