Pagini recente » Cod sursa (job #878662) | Cod sursa (job #2736568) | Cod sursa (job #2613906) | Cod sursa (job #1904140) | Cod sursa (job #971173)
Cod sursa(job #971173)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("lazy.in");
ofstream out ("lazy.out");
const int MAXN = 200010;
struct muchie
{
int x, y, idx;
long long C1, C2;
} V[MAXN];
int T[MAXN], Sol[MAXN];
struct comp
{
inline bool operator () (const muchie &A, const muchie &B) const
{
if (A.C1 == B.C1)
return A.C2 > B.C2;
return A.C1 < B.C1;
}
};
int find (int nod)
{
if (nod == T[nod])
return nod;
return (T[nod] = find (T[nod]));
}
int main()
{
int N, M, i, j, x, y;
in >> N >> M;
for (i = 1; i <= M; i ++){
in >> V[i].x >> V[i].y >> V[i].C1 >> V[i].C2;
V[i].idx = i;
}
for (i = 1; i <= N; i ++)
T[i] = i;
sort (V + 1, V + M + 1, comp ());
for (i = 1; i <= M; i ++){
x = find (V[i].x);
y = find (V[i].y);
if (x != y)
T[x] = y, Sol[++ Sol[0]] = V[i].idx;
}
for (i = 1; i < N; i ++)
out << Sol[i] << "\n";
return 0;
}