Pagini recente » Cod sursa (job #1373770) | Cod sursa (job #2244550) | Cod sursa (job #2822444) | Cod sursa (job #1069430) | Cod sursa (job #543797)
Cod sursa(job #543797)
# include <fstream>
# include <algorithm>
# define DIM 200003
using namespace std;
struct nod{
long long c1, c, a, b, i;
nod(){}
nod(long long X,long long Y, long long I, long long C1, long long C){
a=X;b=Y;i=I;c1=C1;c=C;}
friend bool operator < (const nod &a, const nod &b){
if (a.c1<b.c1)return 1;
if (a.c1==b.c1 && a.c>b.c)return 1;
if (a.c1==b.c1 && a.c==b.c && a.a<b.a)return 1;
if (a.c1==b.c1 && a.c==b.c && a.a==b.a && a.b<b.b)return 1;
if (a.c1==b.c1 && a.c==b.c && a.a==b.a && a.b==b.b && a.i<b.i)return 1;
return 0;
}
};
int n, m, t[DIM], s[DIM];
nod v[DIM];
void read ()
{
ifstream fin ("lazy.in");
fin>>n>>m;
long long c, d, a, b;
for(int i=1;i<=m;++i)
{
fin>>a>>b>>c>>d;
v[i]=nod(a, b, i, c, d);
}
}
long long rad (long long k)
{
long long y=k, i;
while (t[k])
k=t[k];
while (t[y])
{
i=y;
y=t[y];
t[i]=k;
}
return k;
}
void solve ()
{
sort(v+1, v+m+1);
long long ra, rb;
for(int i=1, nt=1;nt<n && i<=m;++i)
{
ra=rad(v[i].a);
rb=rad(v[i].b);
if (ra!=rb)
{
t[ra]=rb;
s[nt]=v[i].i;
++nt;
}
}
}
int main ()
{
read ();
solve ();
freopen("lazy.out", "w", stdout);
for(int i=1;i<n;++i)
printf("%d\n", s[i]);
return 0;
}