建议加强数据
查看原帖
建议加强数据
928579
WhxStar2024楼主2024/7/19 10:20

这道题的数据过水,我用二分(没有单调性)直接过了:

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct f{int x,y,k;}a[2000005];
int fa[1000005];
int find(int x){
	if(fa[x]==x) return x;
	return fa[x]=find(fa[x]);
}
int pd(int x){
	for(int i=1;i<=n;i++){fa[i]=i;}
	for(int i=1;i<=m;i++){if(a[i].k==x) continue;fa[find(a[i].x)]=find(a[i].y);}
	for(int i=2;i<=n;i++){if(find(i)!=find(1))return 0;}
	return 1;
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){cin>>a[i].x>>a[i].y>>a[i].k;}
	int l=0,r=100000,ans=100001;
	while(l<=r){
		int mid=(l+r)/2;
		if(pd(mid)) r=mid-1,ans=mid;
		else l=mid+1;
	}
	cout<<ans;
	return 0;
}

但是

3 2
1 2 0
2 3 2

本来因该输出 11,但我输出 33,建议加强数据。

2024/7/19 10:20
加载中...