Pagini recente » Cod sursa (job #1365175) | Cod sursa (job #444558) | Cod sursa (job #709043) | Cod sursa (job #1688537) | Cod sursa (job #970356)
Cod sursa(job #970356)
#include<fstream>
#include<algorithm>
#include<vector>
#define NMAX 200005
using namespace std;
ifstream f("lazy.in");
ofstream g("lazy.out");
struct GRAPH
{
long long c1,c2;
int n1,n2,nr;
}v[NMAX];
vector < int > Sol;
int N,M;
int TT[NMAX];
inline bool cmp ( GRAPH A , GRAPH B )
{
if( A.c1 == B.c1 )
return A.c2>B.c2;
return A.c1<B.c1;
}
int Find ( int x )
{
int R;
for(R=TT[x];R!=TT[R];R=TT[R]);
return R;
}
int main ( void )
{
f>>N>>M;
for( int i(1) ; i <= M ; ++ i )
{
f>>v[i].n1>>v[i].n2>>v[i].c1>>v[i].c2;
v[i].nr=i;
}
for( int i(1) ; i <= N ; ++i )
TT[i]=i;
f.close();
sort ( v + 1 , v+ M +1 , cmp);
for( int i(1) ; i <= M ; ++i )
{
int x,y;
x=Find(v[i].n1);
y=Find(v[i].n2);
if( x != y )
{
Sol.push_back(v[i].nr);
TT[y]=x;
}
}
sort(Sol.begin(),Sol.end());
for( vector < int > :: iterator it = Sol.begin() ; it != Sol.end() ; ++it )
g<<*it<<"\n";
g.close();
return 0;
}