Pagini recente » Cod sursa (job #600164) | Cod sursa (job #970584) | Cod sursa (job #2355903) | Cod sursa (job #1462101) | Cod sursa (job #764902)
Cod sursa(job #764902)
#include<fstream>
#include<algorithm>
#define NM 200005
using namespace std;
int GR[NM],IND[NM],a[NM],b[NM],N,M;
long long c1[NM],c2[NM];
struct cmp{
bool operator()(const int &a,const int &b)
{
if(c1[a]==c1[b])return c2[a]>c2[b];
else return c1[a]<c1[b];
}
};
int grupa(int i){
if(GR[i]==i)return i;
GR[i]=grupa(GR[i]);
return GR[i];
}
int main(void){
ifstream fin("lazy.in");
ofstream fout("lazy.out");
int i,k=0;
fin>>N>>M;
for(i=1;i<=N;++i)GR[i]=i;
for(i=1;i<=M;++i)
{
fin>>a[i]>>b[i]>>c1[i]>>c2[i];
IND[i]=i;
}
sort(IND+1,IND+M+1,cmp());
for(i=1;i<=M && k<(N-1);++i)
if(grupa(a[IND[i]])!=grupa(b[IND[i]]))
{
++k;
fout<<IND[i]<<'\n';
GR[grupa(a[IND[i]])] = grupa(b[IND[i]]);
}
return 0;
}