最小生成树裸题,没有初始化都能AC,看来测试数据只有一组
#include<iostream> #include<vector> #include<cmath> #include<cstdio> #define inf 1<<30 #define maxn 105 using namespace std; struct stu { double x,y; }; stu mapp[maxn]; int n; vector<int>root[maxn]; double vaule[maxn][maxn]; int visit[maxn]; void prim() { double d[maxn]; fill(d,d+maxn,inf); fill(visit,visit+maxn,0); double re=0; d[0]=0; while(1) { int v=-1; for(int i=0;i<n;i++) { if(!visit[i]&&(v==-1||d[i]<d[v])) v=i; } if(v==-1) break; re+=sqrt(d[v]); visit[v]=1; for(int i=0;i<root[v].size();i++) { int x=root[v][i]; d[x]=min(d[x],vaule[v][x]); } } printf("%.2lf\n",re); } int main() { while(cin>>n) { for(int i=0;i<maxn;i++) root[i].clear(); for(int i=0;i<n;i++) { cin>>mapp[i].x>>mapp[i].y; for(int j=0;j<i;j++) { int l=pow(mapp[i].x-mapp[j].x,2)+pow(mapp[i].y-mapp[j].y,2); root[i].push_back(j); root[j].push_back(i); vaule[i][j]=l; vaule[j][i]=l; } } prim(); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
hdu 1162 Eddy's picture
时间: 2024-12-24 20:13:51