RE 16PTS求助
查看原帖
RE 16PTS求助
1406766
I_am_zjh楼主2025/7/24 11:07

RE 16pts 除了最后一个点全RE

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,c;
long long ans;
int book[5005];
struct node{
	int x,y,v;
}a[2000005];
bool cmp(node x,node y){
	return x.v<y.v;
};
int fa[500005];
int findx(int x){
	if(fa[x]==x) return x;
	else fa[x]=findx(fa[x]);
}
vector<int> v[50005];
void dfs(int k){
	c++;
	book[k]=1;
	for(auto i:v[k]){
		if(book[i]==0) dfs(i);
	}
	return;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>a[i].x>>a[i].y>>a[i].v;
		v[a[i].x].push_back(a[i].y);
		v[a[i].y].push_back(a[i].x);
	}
	dfs(1);
	if(c!=n){
		cout<<"orz";
		return 0;
	}
	sort(a+1,a+1+m,cmp);
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=m;i++){
		if(cnt>=n-1) break;
		int x=a[i].x,y=a[i].y,v=a[i].v;
		if(fa[x]==fa[y]) continue;
		fa[findx(x)]=findx(y);
		ans+=v;
		cnt++;
//		cout<<x<<" "<<y<<" "<<v<<"\n";
	}
	cout<<ans;
	return 0;
}

2025/7/24 11:07
加载中...