sos,大佬们,40分求助!在测试四出错了
查看原帖
sos,大佬们,40分求助!在测试四出错了
643281
lyhbailey99楼主2022/5/9 23:47
#include <stdio.h>
#include <algorithm>
using namespace std;
int pre[1010];
int N,M,X,Y,j,tmax=100010;
int find(int x)
{
    if(pre[x]==x)
    return x;
    if(pre[x]!=x)
        pre[x]=find(pre[x]);
    return pre[x];
}
void join(int x,int y)
{
    int p1=find(x),p2=find(y);
    if(p1!=p2)
    pre[p1]=p2;
}
struct A
{
    int x,y,t;
}a[100010];
bool cmp(A c,A b)
{
    return c.t>b.t;
}

int main()
{
    //freopen("in.txt","r",stdin);
    cin>>N>>M;
    for(int i=1;i<=M;i++)
    {
        cin>>a[i].x>>a[i].y>>a[i].t;
    }
    for(int i=1;i<=N;i++)
        pre[i]=i;
    sort(a+1,a+M+1,cmp);
    for(int i=1;i<=M;i++)
    { int f=0;
      for( j=i;j<=M;j++)
      {
          join(pre[a[j].x],pre[a[j].y]);
      }
      for(int m=1;m<=N;m++)
      {
          if(pre[m]==m)
            f++;
      }
      if(f==1)
        tmax=a[i].t;
      if(j==1&&f!=1)
      {cout<<-1<<endl;return 0;}
      if(f!=1)
        break;
      for(int i1=1;i1<=N;i1++)
        pre[i1]=i1;
    }
    cout<<tmax<<endl;

    return 0;
}
2022/5/9 23:47
加载中...