Pagini recente » Cod sursa (job #2542232) | Cod sursa (job #1378162) | Cod sursa (job #1494088) | Cod sursa (job #2271811) | Cod sursa (job #544115)
Cod sursa(job #544115)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define nmax 200005
int X[nmax], Y[nmax], ind[nmax], GR[nmax];
long long C1[nmax], C2[nmax];
int N, M;
int amaimiccab(int x, int y)
{
if (C1[x] < C1[y]) return 0;
if (C1[x] > C1[y]) return 1;
if (C2[x] < C2[y]) return 0;
return 1;
}
struct cmp
{
bool operator () (const int &a, const int & b) const
{
return amaimiccab(a, b);//C1[a] < C1[b];
}
};
void citire ()
{
int i;
scanf("%d%d", &N, &M);
for (i = 1; i <= M; ++i) scanf("%d%d%d%d", &X[i], &Y[i], &C1[i], &C2[i]);
}
int grupa (int x)
{
if (GR[x] == x) return x;
GR[x] = grupa(GR[x]);
return GR[x];
}
void solve ()
{
int i, x, y;
for (i = 1; i <= M; ++i) ind[i] = i;
for (i = 1; i <= N; ++i) GR[i] = i;
sort(ind+1, ind+M+1, cmp() );
for (i = 1; i <= M; ++i)
{
x = X[ind[i]]; y = Y[ind[i]];
if ( grupa(x) != grupa (y) )
{
GR[grupa(x)] = grupa(y);
printf("%d\n", ind[i]);
}
}
}
int main ()
{
freopen("lazy.in","r",stdin);
freopen("lazy.out","w",stdout);
citire ();
solve ();
return 0;
}