为啥我全wa了
查看原帖
为啥我全wa了
388196
CircaHAN1楼主2021/2/9 22:52
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct point
{
    int x;
    int y;
    int v;
};
point a[9901];
int fat[101];
int n,i,j,x,m,tot,k;
int father(int x)
{
    if(fat[x]!=x)fat[x]=father(fat[x]);
    return fat[x];
}
void unionn(int x,int y)
{
    int fa=father(x);
    int fb=father(y);
    if(fa!=fb)fat[fa]=fb;
}
int cmp(const point&a,const point&b)
{
    if(a.v<b.v)return 1;
      else return 0;
}
int main()
{
    freopen("agrinet.in","r",stdin);
    freopen("agrinet.out","w",stdout);
    cin>>n;
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
      {
          cin>>x;
          if(x!=0)
          {
              m++;
              a[m].x=i;a[m].y=j;a[m].v=x;
           }
       }
       for(i=1;i<=n;i++)fat[i]=i;
       sort(a+1,a+m+1,cmp);
       for(i=1;i<=m;i++)
       {
           if(father(a[i].x)!=father(a[i].y))
           {
               unionn(a[i].x,a[i].y);
               tot+=a[i].v;
               k++;
           }
           if(k==n-1)break;
       }
       cout<<tot;
       return 0;
}
2021/2/9 22:52
加载中...