Pagini recente » Cod sursa (job #365428) | Cod sursa (job #682318) | Cod sursa (job #1013244) | Cod sursa (job #554299) | Cod sursa (job #540566)
Cod sursa(job #540566)
Utilizator |
Adrian Diaconu DITzoneC |
Data |
24 februarie 2011 01:47:30 |
Problema |
Lazy |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
0.9 kb |
#include <cstdio>
#include <algorithm>
using namespace std;
#define nmax 200111
#define FOR(i, s, d) for(i = (s); i < (d); ++i)
#define mp make_pair
#define lint long long
#define f first
#define s second
int n, m, sol[nmax], par[nmax];
pair<pair<pair<lint, lint>, pair<int, int> >, int > A[nmax];
int doit(int i)
{
if(i != par[i])
par[i] = doit(par[i]);
return par[i];
}
int main()
{
int i, j, a, b;
lint c1, c2;
freopen("lazy.in", "r", stdin);
freopen("lazy.out", "w", stdout);
scanf("%d %d", &n, &m);
FOR(i, 0, m)
{
scanf("%d %d %lld %lld", &a, &b, &c1, &c2);
A[i] = mp(mp(mp(c1, -c2), mp(a - 1, b - 1)), i);
}
sort(A, A + m);
FOR(i, 0, n)
par[i] = i;
j = 0;
FOR(i, 0, m)
{
if(doit(A[i].f.s.f) == doit(A[i].f.s.s))
continue;
sol[j++] = A[i].s + 1;
par[par[A[i].f.s.f]] = par[A[i].f.s.s];
}
FOR(i, 0, n - 1)
printf("%d\n", sol[i]);
return 0;
}