求助,我连样例都过不了。。。
查看原帖
求助,我连样例都过不了。。。
965200
natie楼主2024/8/19 13:13

有点乱,求调,谢谢!

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,z,cnt=0,cnt2=0,fa[20010];
int find(int x)
{
	if(x==fa[x])
	{
		return x;
	}
	return fa[x]=find(fa[x]);
}
struct ba{
	int d1,d2,cd;
}a[200010];
bool cmp(ba x,ba y)
{
	return x.cd<y.cd;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y>>z;
		a[i].d1=x;
		a[i].d2=y;
		a[i].cd=z;
	}
	sort(a+1,a+m+1,cmp);
	for(int i=1;i<=m;i++)
	{
		if(find(a[i].d1)==find(a[i-1].d1))
		{
			continue;
		}
		fa[find(a[i].d1)]=find(a[i].d2);
		cnt2+=a[i].cd;
		cnt++;
		if(cnt==n-1)
		{
			break;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(find(fa[i])!=find(fa[n])) 
		{
			cout<<"orz";
			return 0;
		}
	}
	cout<<cnt2;
	return 0;
 } ``````
2024/8/19 13:13
加载中...