36pts:
#include<bits/stdc++.h>
using namespace std;
const int N=4e2+5;
const int INF=0x3f3f3f3f;
int n,m,f,flag[N];
int anst=0,ansc=0,cnt=0;
struct Node{
double g;
int t,c;
}G[N][N];
Node dist[N];
void prim(int u){
memset(dist,0,sizeof(dist));
memset(flag,0,sizeof(flag));
dist[u].g=INF;
anst=0,ansc=0;
for(int i=1;i<=n;i++){
int k=-1,maxn=-1;
for(int j=1;j<=n;j++){
if(!flag[j]&&dist[j].g>maxn){
maxn=dist[j].g;
k=j;
}
}
flag[k]=1;
anst+=dist[k].t;
ansc+=dist[k].c;
for(int j=1;j<=n;j++){
if(G[k][j].g>dist[j].g&&!flag[j]){
dist[j].g=G[k][j].g;
dist[j].c=G[k][j].c;
dist[j].t=G[k][j].t;
}
}
}
}
int main(){
cin>>n>>m>>f;
int u,v,cb,ti;
for(int i=1;i<=m;i++){
cin>>u>>v>>cb>>ti;
double w=cb*1.0/ti;
G[u][v].g=w;
G[v][u].g=w;
G[u][v].c=G[v][u].c=cb;
G[u][v].t=G[v][u].t=ti;
}
prim(1);
//cout<<ansc<<" "<<anst<<" "<<cnt<<" ";
if(f<=ansc) cout<<"0.0000";
else{
cnt=f-ansc;
double ans=cnt*1.0/anst;
printf("%.4f",ans);
}
}
求调【伤心】