Pagini recente » Cod sursa (job #2359862) | Cod sursa (job #1464650) | Cod sursa (job #785016) | Cod sursa (job #2533163) | Cod sursa (job #847228)
Cod sursa(job #847228)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
struct MyStruct {
long long d,c;
int a,b,nr;
};
const int N = 200010;
int n,m,t[N];
vector<int> sol;
MyStruct a[N];
inline bool cmp(MyStruct a,MyStruct b)
{
if(a.d==b.d)
return a.c>b.c;
return a.d<b.d;
}
int GetFather(int nod)
{
if(t[nod]==nod) return nod;
int rez=GetFather(t[nod]);
t[nod]=rez;
return rez;
}
int main()
{
freopen("lazy.in","r",stdin);
freopen("lazy.out","w",stdout);
int i,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{scanf("%d%d%lld%lld",&a[i].a,&a[i].b,&a[i].d,&a[i].c);a[i].nr = i;}
for(i=1;i<=n;i++)
t[i]=i;
sort(a+1,a+m+1,cmp);
for(i=1;i<=m;i++)
{
x=GetFather(a[i].a);
y=GetFather(a[i].b);
if(x!=y)
{
sol.push_back(a[i].nr);
t[y]=x;
}
}
sort(sol.begin(),sol.end());
for(i=0;(unsigned int)i<sol.size();i++)
printf("%d\n",sol[i]);
return 0;
}