Pagini recente » Cod sursa (job #2030886) | Cod sursa (job #321592) | Cod sursa (job #852417) | Cod sursa (job #1243016) | Cod sursa (job #2028237)
#include <fstream>
#include <algorithm>
#include <vector>
#define DIM 200002
using namespace std;
ifstream f("lazy.in");
ofstream g("lazy.out");
int n, m, t[DIM];
vector <int> sol;
struct graful
{
int x, y, c1, c2, i;
}graf[DIM];
bool cmp(graful a, graful b)
{
if(a.c1 == b.c1)
return a.c2 > b.c2;
return a.c1 < b.c1;
}
int rad(int x)
{
while(t[x] > 0)
x = t[x];
return x;
}
void calc(int rx, int ry)
{
if(t[rx] < t[ry])
{
t[rx] += t[ry];
t[ry] = rx;
}
else
{
t[ry] += t[rx];
t[rx] = ry;
}
}
void afis()
{
for(int i = 0; i < sol.size(); ++ i)
g<<sol[i]<<'\n';
}
int main()
{
f>>n>>m;
for(int i = 1; i <= m; ++ i)
{
f>>graf[i].x>>graf[i].y>>graf[i].c1>>graf[i].c2;
graf[i].i = i;
}
for(int i = 1;i <= n; ++ i)
t[i] = -1;
sort(graf + 1, graf + m + 1, cmp);
for(int i = 1; i <= m; ++ i)
{
int rx = rad(graf[i].x);
int ry = rad(graf[i].y);
if(rx != ry)
{
calc(rx, ry);
sol.push_back(graf[i].i);
}
}
afis();
return 0;
}