Pagini recente » Cod sursa (job #534869) | Cod sursa (job #1237295) | Cod sursa (job #2290639) | Cod sursa (job #1171692) | Cod sursa (job #541448)
Cod sursa(job #541448)
#include<cstdio>
#include<algorithm>
using namespace std;
struct muchie{
int a,b,ind;
long long v,p;
}muc[100100];
struct cmp{
bool operator() (const muchie &a,const muchie &b){
if(a.v<b.v)
return true;
if(a.v>b.v)
return false;
if(a.p<b.p)
return false;
return true;
}
};
int N,M,par[100100],sol[100100];
int tata(int x){
if(par[x]==x)
return x;
return par[x]=tata(par[x]);
}
void solve(){
int i,x,y;
for(i=1;sol[0]<N-1;++i){
x=tata(muc[i].a);
y=tata(muc[i].b);
if(x==y)
continue;
par[x]=y;
sol[++sol[0]]=muc[i].ind;
}
}
int main(){
freopen("lazy.in","r",stdin);
freopen("lazy.out","w",stdout);
int i;
scanf("%d%d",&N,&M);
for(i=1;i<=M;++i){
scanf("%d%d%lld%lld",&muc[i].a,&muc[i].b,&muc[i].v,&muc[i].p);
muc[i].p-=muc[i].p*muc[i].v;
muc[i].ind=i;
}
for(i=1;i<=N;++i)
par[i]=i;
sort(muc+1,muc+N+1,cmp());
solve();
for(i=1;i<=sol[0];++i)
printf("%d\n",sol[i]);
fclose(stdin);
fclose(stdout);
return 0;
}