萌新刚学OI,求问一种奇怪的事情
  • 板块学术版
  • 楼主SIXIANG32
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/7/13 21:55
  • 上次更新2023/11/6 23:10:40
查看原帖
萌新刚学OI,求问一种奇怪的事情
298549
SIXIANG32楼主2020/7/13 21:55
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int fa[10010],n,m;
struct node{
	int no,to,val;
};
vector<node>gra;
int Find(int x)
{
	if(fa[x]==x)return x;
	else return fa[x]=Find(fa[x]);
} 
void Union(int u,int v)
{
	int U=Find(u),V=Find(v);
	fa[V]=U;
}
bool cmp(node x,node y)
{
	return x.val<y.val;
}
int kruskal()
{
	for(int p=1;p<=10010;p++)
		fa[p]=p;
	sort(gra.begin(),gra.end(),cmp);
	int ans=0;
	for(int p=0;p<m;p++)
	{
		int U=Find(gra[p].no);int V=Find(gra[p].to);
		if(U==V)continue;
		ans+=gra[p].val;
		Union(U,V);
	}
	return ans;
}
void readnum()
{
	cin>>n>>m;
	node temp;
	for(int p=1,x,y,z;p<=m;p++)
		cin>>x>>y>>z,temp.no=x,temp.to=y,temp.val=z,gra.push_back(temp);
}
int main()
{
	readnum();
	cout<<kruskal()<<endl;
}

这是我最小生成树板子的AC代码,我初始化并查集的时候越界了(当时我没检查到),结果我本地没RE,洛谷也AC了,这究竟是怎么回事/kk

2020/7/13 21:55
加载中...