Pagini recente » Cod sursa (job #583965) | Cod sursa (job #1297472) | Cod sursa (job #1033771) | Cod sursa (job #2731685) | Cod sursa (job #1248348)
/*
* 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;
}