#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5,inf=1e14;
int n,m;
int dis[N],pre[N],cnt[N];
bool vis[N];
struct info{
int v,p,q;
};
vector<info>g[N];
int spfa(int x){
memset(dis,0,sizeof(dis));
memset(cnt,0,sizeof(cnt));
memset(pre,0,sizeof(pre));
memset(vis,0,sizeof(vis));
queue<int>sk;
for(int i=1;i<=n;i++)dis[i]=inf;
dis[1]=0;
vis[1]=1;
pre[1]=1;
sk.push(1);
while(!sk.empty()){
int u=sk.front();
sk.pop();
vis[u]=0;
for(auto [v,p,q]:g[u]){
int w=x*q-p;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
cnt[v]=cnt[u]+1;
pre[v]=u;
if(cnt[v]>=n)return 1;
if(!vis[u])sk.push(v),vis[v]=1;
}
}
}
return 0;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int u,v,p,q;
cin>>u>>v>>p>>q;
g[u].push_back({v,p,q});
g[v].push_back({u,p,q});
}
double l=0,r=1e5,ans=-1;
while(r-l>=0.001){
double mid=(l+r)/2;
if(!spfa(mid)){
ans=mid;
r=mid;
}
else{
l=mid;
}
}
printf("%.1f",ans);
return 0;
}