帮忙看看代码

回复帖子

@万岁小姐姐 2018-07-05 10:26 回复
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 100005;
struct Edge{int x,y,z;}a[maxn];
int prt[maxn],bj,Max=0,n,m;
bool cmp(const Edge &e1,const Edge &e2){return e1.z<e2.z;}
int Find(int x)
{
    if(prt[x]==x) return x;
    prt[x]=Find(prt[x]);
    return prt[x];
}
void kruskal()
{
    int f1,f2,k=0;
    for(int i=1;i<=n;i++) prt[i]=i;
    for(int i=1;i<=m;i++)
    {
        f1=Find(a[i].x);
        f2=Find(a[i].y);
        if(f1!=f2)
        {
            k++;
            Max=max(Max,a[i].z);
            prt[f2]=f1;
            if(k==m-1) return;
        }

    } 
    if(k!=m-1) bj=1;
    return;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=m;i++)
        cin>>a[i].x>>a[i].y>>a[i].z;
    sort(a+1,a+m+1,cmp);
    kruskal();
    cout<<Max;
}

用的kruskal,wa了一个点

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。