蒟蒻求助QWQ为什么会有边没有放进去
查看原帖
蒟蒻求助QWQ为什么会有边没有放进去
158475
preying楼主2022/10/30 21:39
#include<bits/stdc++.h>
using namespace std;
int n,m,fa[5005],t,sum,v[5005];
struct node {
	int from,to,l;
} mp[200005];
bool cmp(node a,node b) {
	return a.l<b.l;
}
int find(int x) {
	if(fa[x]==x) return x;
	fa[x]=find(fa[x]);
	return fa[x];
}
int main() {
	cin>>n>>m;
	for(int i=1; i<=m; ++i)
		cin>>mp[i].from>>mp[i].to>>mp[i].l;
	sort(mp+1,mp+m+1,cmp);
	/*
	cout<<"-------------------------------------------"<<endl;
	for(int i=1; i<=150; ++i)
		cout<<mp[i].from<<" "<<mp[i].to<<" "<<mp[i].l<<endl;
	*/
	for(int i=1; i<=n; ++i) fa[i]=i;
	for(int i=1; i<=m; ++i) {
		if(find(mp[i].from)!=find(mp[i].to)) {
//			v[mp[i].from]=1;
//			v[mp[i].to]=1;
//			cout<<"sajh"<<mp[i].from<<" "<<mp[i].to<<endl;
			fa[mp[i].to]=mp[i].from;
			sum+=mp[i].l;
			t++;
		}
//		else cout<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl;
		/*
		for(int i=1; i<=n; ++i)
			cout<<i<<" "<<fa[i]<<endl;
		cout<<"fasdg"<<sum<<" "<<t<<endl;
		*/
		if(t==n-1) break;
	}
	/*
	for(int i=1; i<=n; ++i)
		cout<<find(fa[i])<<" ";
	cout<<endl;
	for(int i=1;i<=n;++i)
		cout<<v[i]<<" ";*/
	if(t==n-1)
		cout<<sum;
	else
		cout<<"orz";
}
2022/10/30 21:39
加载中...