Pagini recente » Cod sursa (job #1819565) | Cod sursa (job #582160) | Cod sursa (job #2367349) | Clasamentul arhivei de probleme | Cod sursa (job #544885)
Cod sursa(job #544885)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("lazy.in");
ofstream g("lazy.out");
# define nmax 200002
typedef struct muchii{
int nr,x,y;
long long c1,c2;
};
muchii m[nmax];
int N,M,t[nmax];
void citire()
{
f>>N>>M;
int i;
for(i=1;i<=M;++i)
m[i].nr=i, f>>m[i].x>>m[i].y>>m[i].c1>>m[i].c2, t[i]=i;
}
int cmp(muchii a,muchii b)
{
if(a.c1+a.c2==b.c1+b.c2)
return a.c2>b.c2;
return a.c1<b.c1;
}
int tata(int i)
{
int p,q;
p=i;
while(t[i]!=i) i=t[i];
while(t[p]!=i) q=p, p=t[p], t[q]=i;
return i;
}
int main()
{
citire();
sort(m+1,m+M+1,cmp);
int i,p;
//for(i=1;i<=M;++i) g<<m[i].nr<<' ';
for(i=1;i<=M;++i)
if(tata(m[i].x)!=tata(m[i].y))
{
g<<m[i].nr<<'\n';
p=t[m[i].y];
t[p]=t[m[i].x];
}
}