36pts求调
查看原帖
36pts求调
1359911
zhangmingyue_楼主2024/12/28 09:33

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);
	}
}

求调【伤心】

2024/12/28 09:33
加载中...