Cod sursa(job #971173)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 8 iulie 2013 17:56:16
Problema Lazy Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream in ("lazy.in");
ofstream out ("lazy.out");

const int MAXN = 200010;

struct muchie
{
    int x, y, idx;
    long long C1, C2;
} V[MAXN];

int T[MAXN], Sol[MAXN];

struct comp
{
    inline bool operator () (const muchie &A, const muchie &B) const
    {
        if (A.C1 == B.C1)
            return A.C2 > B.C2;

        return A.C1 < B.C1;
    }
};

int find (int nod)
{
    if (nod == T[nod])
        return nod;

    return (T[nod] = find (T[nod]));
}

int main()
{
    int N, M, i, j, x, y;

    in >> N >> M;
    for (i = 1; i <= M; i ++){
        in >> V[i].x >> V[i].y >> V[i].C1 >> V[i].C2;
        V[i].idx = i;
    }

    for (i = 1; i <= N; i ++)
        T[i] = i;

    sort (V + 1, V + M + 1, comp ());

    for (i = 1; i <= M; i ++){
        x = find (V[i].x);
        y = find (V[i].y);

        if (x != y)
            T[x] = y, Sol[++ Sol[0]] = V[i].idx;
    }

    for (i = 1; i < N; i ++)
        out << Sol[i] << "\n";

    return 0;
}