Pagini recente » Cod sursa (job #1917158) | Cod sursa (job #2334881) | Cod sursa (job #2246404) | Cod sursa (job #770979) | Cod sursa (job #2028818)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin ("lazy.in");
ofstream fout ("lazy.out");
int x,y,i,ii,m,n,q,rx,ry,k;
vector <int> sol;
vector <int> T;
struct graf{
int st,dr,i;
long long c1,c2;
}L[200001];
bool cmp(graf x, graf y){
if(x.c1==y.c2)
return x.c2>y.c2;
return x.c1<y.c1;
}
int rad (int x){
while(T[x]>0){
x=T[x];
}
return x;
}
int main(){
fin>>n>>m;
T.push_back(0);
for(i=1;i<=n;i++){
T.push_back(-1);
}
for(i=1;i<=m;i++){
fin>>L[i].st>>L[i].dr>>L[i].c1>>L[i].c2;
L[i].i=i;
}
sort(L+1,L+m+1,cmp);
for(i=1;i<=m;i++){
rx=rad(L[i].st);
ry=rad(L[i].dr);
if(rx!=ry){
sol.push_back(L[i].i);
if(rx>ry){
T[rx]+=T[ry];
T[ry]=rx;
}
else{
T[ry]+=T[rx];
T[rx]=ry;
}
}
}
for(i=0;i<sol.size();i++){
fout<<sol[i]<<"\n";
}
return 0;
}