#include<bits/stdc++.h>
using namespace std;
long i;
double ans=0.0;
struct st
{
long a,b;
double wt;
bool operator < ( const st&ck) const
{
return wt<ck.wt;
}
};
vector<st>vec;
long ar[100007];
long find(long r)
{
return (ar[r]==r) ? r: find(ar[r]);
}
long mst(long n1)
{
sort(vec.begin(),vec.end());
for(i=1;i<=n1;i++)
ar[i]=i;
long count=0;
ans=0;
for(i=0;i<(long)vec.size();i++)
{
long a=find(vec[i].a);
long b=find(vec[i].b);
if(a!=b)
{
ar[a]=b;
count++;
ans+=vec[i].wt;
if(count==n1-1)
break;
}
}
}
main()
{
long ts,cs=0;
cin>>ts;
while(ts--)
{
long node,j;
cin>>node;
double x[100003],y[100009];
double rs;
if(cs>0)
cout<<endl;
cs++;
for(i=0;i<node;i++)
{
cin>>x[i]>>y[i];
}
for(i=0;i<node;i++)
{
for(j=i+1;j<node;j++)
{
rs=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
st edge;
edge.a=i+1;
edge.b=j+1;
edge.wt=rs;
vec.push_back(edge);
}
}
mst(node);
printf("%.2lf\n",ans);
vec.clear();
}
}
using namespace std;
long i;
double ans=0.0;
struct st
{
long a,b;
double wt;
bool operator < ( const st&ck) const
{
return wt<ck.wt;
}
};
vector<st>vec;
long ar[100007];
long find(long r)
{
return (ar[r]==r) ? r: find(ar[r]);
}
long mst(long n1)
{
sort(vec.begin(),vec.end());
for(i=1;i<=n1;i++)
ar[i]=i;
long count=0;
ans=0;
for(i=0;i<(long)vec.size();i++)
{
long a=find(vec[i].a);
long b=find(vec[i].b);
if(a!=b)
{
ar[a]=b;
count++;
ans+=vec[i].wt;
if(count==n1-1)
break;
}
}
}
main()
{
long ts,cs=0;
cin>>ts;
while(ts--)
{
long node,j;
cin>>node;
double x[100003],y[100009];
double rs;
if(cs>0)
cout<<endl;
cs++;
for(i=0;i<node;i++)
{
cin>>x[i]>>y[i];
}
for(i=0;i<node;i++)
{
for(j=i+1;j<node;j++)
{
rs=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
st edge;
edge.a=i+1;
edge.b=j+1;
edge.wt=rs;
vec.push_back(edge);
}
}
mst(node);
printf("%.2lf\n",ans);
vec.clear();
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন