Pagini recente » Cod sursa (job #1042391) | Cod sursa (job #3258805) | Cod sursa (job #1633490) | Istoria paginii utilizator/arhip_georgiana_323ca | Cod sursa (job #397281)
Cod sursa(job #397281)
#include<stdio.h>
long n,m,x,y;
FILE *f;
struct muchie {
long a,b,c;
}v[500000];
void read ()
{
long i;
f=fopen("pscnv.in","r");
fscanf(f,"%ld%ld%ld%ld",&n,&m,&x,&y);
for (i=1;i<=m;++i)
fscanf(f,"%ld%ld%ld",&v[i].a,&v[i].b,&v[i].c);
fclose(f);
}
void quick (long s, long d)
{
long m=(s+d)/2,i=s,j=d,x;
x=v[m].c;
muchie aux;
while (i<=j)
{
while (v[i].c<x)
i++;
while (x<v[j].c)
j--;
if (i<=j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
i++;
j--;
}
}
if (s<j)
quick(s,j);
if (i<d)
quick(i,d);
}
void solve ()
{
long i,c[500000],j,min,max;
for (i=1;i<=n;++i)
c[i]=i;
i=1;
while (c[x]!=c[y])
{
if (c[v[i].a]<c[v[i].b])
{
min=c[v[i].a];
max=c[v[i].b];
c[v[i].b]=min;
}
else
{
min=c[v[i].b];
max=c[v[i].a];
c[v[i].a]=min;
}
for (j=1;j<=n;++j)
if (c[j]==max)
c[j]=min;
++i;
}
f=fopen("pscnv.out","w");
fprintf(f,"%ld",v[i-1].c);
fclose(f);
}
int main ()
{
read();
quick(1,m);
solve ();
return 0;
}