Pagini recente » Cod sursa (job #1146472) | Cod sursa (job #1582346) | Cod sursa (job #878262) | Cod sursa (job #889139) | Cod sursa (job #543776)
Cod sursa(job #543776)
# include <fstream>
# include <vector>
# include <set>
# include <algorithm>
# include <cmath>
# define DIM 200003
# define pb push_back
# define mp make_pair
using namespace std;
struct nod{
int a, b, i;
long long c1;
double c;
nod(){}
nod(int X, int Y, int I, long long C1, double 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;
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, log(c)+log(d));
}
}
int rad (int k)
{
int 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);
int ra, rb;
for(int i=1;s[0]<n-1;++i)
{
ra=rad(v[i].a);
rb=rad(v[i].b);
if (ra!=rb)
{
t[ra]=rb;
s[++s[0]]=v[i].i;
}
}
}
int main ()
{
read ();
solve ();
freopen("lazy.out", "w", stdout);
for(int i=1;i<n;++i)
printf("%d\n", s[i]);
return 0;
}