#include<bits/stdc++.h>
using namespace std;
struct eage
{
int x,y;
double cost,ka,kb;
}p[1000000];
double f,eps=1e-6;
int dad[200010],n,m;
bool cmp(eage a,eage b)
{
return a.cost>b.cost;
}
int find(int x)
{
int a=x;
while(x!=dad[x])
x=dad[x];
while(a!=dad[a])
{
int z=a;
a=dad[a];
dad[z]=x;
}
return x;
}
int check(double x)
{
for(int i=1;i<=n;i++)
dad[i]=i;
for(int i=1;i<=n;i++)
p[i].cost=-p[i].ka-x*p[i].kb;
sort(p+1,p+1+m,cmp);
int check=0;
double sum=f;
for(int i=1;i<=m;i++)
{
int fav=find(p[i].x),fau=find(p[i].y);
if(fav!=fau)
{
dad[fav]=fau;
sum+=p[i].cost;
check++;
if(check>=n-1)
{
break ;
}
}
}
return sum>=0;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>f;
for(int i=1;i<=m;i++)
scanf("%d%d%lf%lf",&p[i].x,&p[i].y,&p[i].ka,&p[i].kb);
double l=0,r=1e9,mid;
while(l+eps<r)
{
mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
}
printf("%.4lf",r);
return 0;
}
要上学了,可能很久以后才能看