Pagini recente » Cod sursa (job #344961) | Cod sursa (job #234376) | Cod sursa (job #89252) | Cod sursa (job #3136942) | Cod sursa (job #2460951)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("lazy.in");
ofstream g ("lazy.out");
constexpr int NMAX = 2e5 + 5;
struct road
{
int a, b;
int poz;
long long c1, c2;
};
road v[NMAX];
int rep[NMAX];
road nr;
vector <int> sol;
int n, m;
bool cmp (road a, road b)
{
if (a.c1 > b.c1) return false;
if (a.c1 == b.c1 && a.c2 < b.c2) return false;
return true;
}
int Reprezentant (int node)
{
if (rep[node] != node)
{
rep[node] = Reprezentant(rep[node]);
}
return rep[node];
}
int main()
{
f >> n >> m;
for (int i=1; i<=m; ++i)
{
f >> nr.a >> nr.b >> nr.c1 >> nr.c2;
nr.poz = i;
v[i] = nr;
}
sort(v+1, v+m+1, cmp);
for (int i=1; i<=n; ++i)
rep[i] = i;
for (int i=1; i<=m; ++i)
{
int reprea = Reprezentant(v[i].a);
int repreb = Reprezentant(v[i].b);
if (reprea == repreb) continue;
rep[reprea] = repreb;
sol.push_back(v[i].poz);
}
for (int i=0; i<sol.size(); ++i)
g << sol[i] << '\n';
return 0;
}