wczxluo @ 2023-08-08 09:56:37
ID 题目 提交者 结果 用时 内存 语言 文件大小 提交时间 测评时间
#43598 1. 最小生成树模板 2022WCZXC2026 0 0ms 0kb C++11 768b 2023-08-08 09:48:16 2023-08-08 09:48:18
answer
#include<bits/stdc++.h>
using namespace std;
struct qwe{
int q,w,e;
}a[50001];
int b[10000001];
int find(int x)
{
if(b[x]!=x) b[x]=find(b[x]);
return b[x];
}
void wer(int x,int y)
{
int fx=find(x);
int fy=find(y);
b[fx]=fy;
}
bool comp(qwe x,qwe y)
{
return x.w<y.w;
}
int main()
{
int n,m;
int ans=0;
int num=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
b[i]=i;
}
for(int i=1;i<=m;i++)
{
cin>>a[i].e>>a[i].q>>a[i].w;
}
sort(a+1,a+1+m,comp);
for(int i=1;i<=m;i++)
{
int fd=find(a[i].e),fg=find(a[i].q);
if(fd!=fg)
{
ans+=a[i].w;
num++;
wer(fd,fg);
if(num==n-1) break;
}
}
int q1,q2;
q1=find(a[1].e);
q2=find(a[2].q);
if(q1!=q2)
{
cout<<"orz";
}
else cout<<ans;
}
by Field_Mouse @ 2023-08-08 10:01:12
@wczxluo 你这里联通性的判别出问题了,1和2联通不代表图联通,建议遍历并查集找父亲
by Field_Mouse @ 2023-08-08 10:02:11
@wczxluo 你这份记录就是连通性问题
by lyc2006 @ 2023-08-08 10:04:47
struct qwe{
int q,w,e;
}a[50001];
int b[10000001]
by lyc2006 @ 2023-08-08 10:07:19
联通性的判别直接判断
by wczxluo @ 2023-08-08 14:47:37
@egg_rat 谢谢
by wczxluo @ 2023-08-08 14:47:59
@lyc2006 谢谢