Pagini recente » Cod sursa (job #605315) | Cod sursa (job #3228129) | Cod sursa (job #1817692) | Cod sursa (job #1596456) | Cod sursa (job #783373)
Cod sursa(job #783373)
#include<fstream>
#define dim 200001
#include<algorithm>
using namespace std;
ifstream f("lazy.in");
ofstream g("lazy.out");
int N,M,i,j;
int x[dim],y[dim],ind[dim],group[dim];
long long c1[dim],c2[dim];
struct comp
{bool operator()(const int &a, const int &b)const
{if(c1[a]==c1[b])
return(c2[a]>c2[b]);
else
return(c1[a]<c1[b]);}
};
inline int group_name(int s)
{if(group[s]==s)
return s;
group[s]=group_name(group[s]);
return group[s];
}
int unite_groups(int a, int b)
{group[group_name(b)]=group_name(a);}
int main()
{f>>N>>M;
for(i=1; i<=M; i++)
{f>>x[i]>>y[i]>>c1[i]>>c2[i];
ind[i]=i;}
for(i=1; i<=N; i++)
group[i]=i;
sort(ind+1,ind+M+1,comp());
for(i=1; i<=M; i++)
{if(group_name(x[ind[i]])!=group_name(y[ind[i]]))
{unite_groups(x[ind[i]],y[ind[i]]);
g<<ind[i]<<endl;}
}
return 0;}