Cod sursa(job #1248348)

Utilizator xtreme77Patrick Sava xtreme77 Data 24 octombrie 2014 22:47:26
Problema Lazy Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
/*
 * Code by Spiromanul
 */


#include <fstream>
#include <algorithm>
#include <vector>

const char IN [ ] = "lazy.in" ;
const char OUT [ ] = "lazy.out" ;
const long long  MAX = 200014 ;

using namespace std;

ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;

long long tata [ MAX ] ;

struct nationala {
    long long  a ; long long  b ;
    long long  c1 , c2 ;
    long long  poz ;
    void sett ( long long  aaa , long long  bbb , long long  ccc , long long  ddd , long long  eee )
    {
        a = aaa ;
        b = bbb ;
        c1 = ccc ;
        c2 = ddd ;
        poz = eee ;
    }
};

nationala q [ MAX ] ;

bool cmp ( nationala a , nationala b )
{
    if ( a.c1 == b.c1 )
        return a.c2 > b.c2 ;
    return a.c1 < b.c1 ;
}

long long  stramos ( long long  nod )
{
    long long  R = nod ;
    for ( ; tata [ R ] != R ; R = tata [ R ] ) ;
    return R ;
}
void uneste ( long long  a , long long  b )
{
    tata [ b ] = a ;
}

int main(              )
{
    long long  n , m ;
    fin >> n >> m ;
    for ( long long  i = 1 ; i <= m ; ++ i )
    {
        long long  a , b , c , d ;
        fin >> a >> b >> c >> d ; tata [ a ] = a ; tata [ b ] = b ;
        q [ i ].sett ( a , b , c , d , i ) ;
    }
    sort ( q + 1 , q + m + 1 , cmp ) ;
    for ( long long  i = 1 ; i <= m ; ++ i )
        if ( stramos ( q [ i ].a ) != stramos ( q [ i ].b ) ){
            uneste ( stramos ( q [ i ].a ) , stramos ( q [ i ].b ) ) ;
            fout << q [ i ].poz << '\n' ;
        }
    return 0;
}