Pagini recente » Cod sursa (job #104659) | Cod sursa (job #3140439) | Cod sursa (job #87275) | Cod sursa (job #44657) | Cod sursa (job #2972591)
#include <bits/stdc++.h>
using namespace std;
ifstream in("lazy.in");
ofstream out("lazy.out");
const int N = 2e5;
vector <int> g[N + 1];
int n, m;
struct muchie
{
int x, y, cost1, cost2, viz;
};
muchie v[N + 1];
int sef[N + 1];
int find(int nod)
{
if(nod == sef[nod])
return nod;
return sef[nod] == find(sef[nod]);
}
int cmp(muchie a, muchie b)
{
return a.cost1 < b.cost1;
}
signed main()
{
in >> n >> m;
for(int i = 1; i <= n; i++)
sef[i] = i;
map <pair <int, int>, int> mp;
for(int i = 1; i <= m; i++)
{
in >> v[i].x >> v[i].y >> v[i].cost1 >> v[i].cost2;
mp[{v[i].x, v[i].y}] = i;
}
sort(v + 1, v + m + 1, cmp);
for(int i = 1; i <= m; i++)
{
int a = find(v[i].x), b = find(v[i].y);
if(a != b)
{
sef[b] = a;
v[i].viz = 1;
}
}
for(int i = 1; i <= m; i++)
if(v[i].viz == 1)
out << mp[{v[i].x, v[i].y}] << '\n';
return 0;
}