Pagini recente » Cod sursa (job #2277631) | Cod sursa (job #1943998) | Cod sursa (job #2330390) | Cod sursa (job #1434324) | Cod sursa (job #1321261)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("lazy.in");
ofstream fout("lazy.out");
struct data {
int x;
int y;
long long z;
long long c;
int p;
} v[200010];
int n, m, rx, ry, dr;
int t[200010], sol[200010];
int rad(int x) {
while (t[x]>0)
x = t[x];
return x;
}
bool cmp(const data &a, const data &b) {
return (a.z != b.z ? a.z<b.z : a.c>b.c);
}
int main() {
fin >> n >> m;
for (int i = 1; i <= m; i++) {
fin >> v[i].x >> v[i].y >> v[i].z >> v[i].c;
v[i].p = i;
t[i] = -1;
}
sort(v + 1, v + m + 1, cmp);
for (int i = 1; i <= m; i++){
rx = rad(v[i].x);
ry = rad(v[i].y);
if (rx != ry) {
if (t[rx] < t[ry]) {
t[rx] += t[ry];
t[ry] = rx;
}
else {
t[ry] += t[rx];
t[rx] = ry;
}
sol[++dr] = v[i].p;
if (dr == n - 1) {
for (int j = 1; j < n; j++)
fout << sol[j] << "\n";
return 0;
}
}
}
}