比赛 ICPC复现(AI数据) 评测结果 AAAAA
题目名称 最小生成图 最终得分 100
用户昵称 李金泽 运行时间 0.120 s
代码语言 C++ 内存使用 4.01 MiB
提交时间 2026-05-26 21:34:05
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define N 3005
#define M 5005
#define int long long
#define ui unsigned
#define ul unsigned long long
#define db double
#define fo(i,l,r) for(int i=l;i<=r;i++)
#define rf(i,r,l) for(int i=r;i>=l;i--)
#define mem(x) memset(x,0,sizeof(x));
using namespace std;
int T,n,m,k,f[N],op,x,y,z;
db ans=1e15,sum;
struct edge{int u,v,w;bool f;bool operator<(edge y){return w<y.w;}}e[M];
void swap(int &x,int &y){int t=x;x=y;y=t;}
int max(int x,int y){return x>y?x:y;}
int min(int x,int y){return x<y?x:y;}
int fd(int x){return x^f[x]?f[x]=fd(f[x]):x;}
void mg(int x,int y){f[fd(x)]=fd(y);}
int read(){
	int sum=0;bool f=0;char c=getchar();
	for(;c<48||c>57;c=getchar())if(c==45)f=1;
	for(;c>=48&&c<=57;c=getchar())sum=sum*10+(c&15);
	return f?-sum:sum;
}
signed main(){ 
	freopen("tu.in","r",stdin);freopen("tu.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	n=read();m=read();
	fo(i,1,m)e[i]={read(),read(),read(),0};
	sort(e+1,e+m+1);
	fo(i,1,n)f[i]=i;
	fo(i,1,m){
		x=e[i].u;y=e[i].v;
		if(fd(x)==fd(y))continue;
		mg(x,y);
		e[i].f=1;
	}
	fo(i,1,m)
		if(!e[i].f){
			e[i].f=1;
			k=0;sum=0;
			fo(j,1,m){
				if(!e[j].f)continue;
				k++;sum+=(db)e[j].w/k;
			}
			ans=min(ans,sum);
		}
	printf("%.0lf",ans);
	return 0;
}