数据点3WA,求调(QAQ)
查看原帖
数据点3WA,求调(QAQ)
747305
LGCat_ERR楼主2024/3/27 18:25

目前已知num最后等于3(就是还有两个村庄未连接)

Code:


#include<bits/stdc++.h>
using namespace std;
int ans,num;

struct cat{
	int x,y,t;
}road[100000]; 

int dot[100000];//是表示点所在集合 

bool cmp(cat &a,cat &b){
	return(a.t<b.t);
}

int find(int f){
	while(dot[f]!=f){
		f=dot[f];
	}
	return f;
}

bool into(int a,int b){
	int in1=find(a),in2=find(b);
	if(in1!=in2){ 
		dot[in1]=in2;
		return 1;//本来没连接 
	}
	return 0;
}

int main(){
	int n,m;	
//	freopen("P1111_2.in","r",stdin);
	cin>>n>>m;
	num=n;
	for(int i=1;i<=n;i++){
		dot[i]=i;//每个集合都只有自己
	}
	for(int i=1;i<=m;i++){
		int x,y,t;
		cin>>x>>y>>t;
		road[i].x=x;
		road[i].y=y;
		road[i].t=t;
	}
	sort(road+1,road+m+1,cmp);//排序 
	for(int i=1;i<=m;i++){
		if(into(road[i].x,road[i].y)){//如果从 x 到 y 这条路没修 
			ans=road[i].t;//修好它,改变ans值 
//			cout<<road[i].x<<' '<<road[i].y<<endl;//test
			num--;//多一个村庄被连接 
		}
	}
//	cout<<num<<' '; 
	if(num>1){
		cout<<-1;
		return 0;
	}
	
	cout<<ans;	
	return 0;
}

且神奇的是,ans最终是个负数(用过long long了)

2024/3/27 18:25
加载中...