hdu 1162
2017-11-28 17:34
204 查看
点击打开链接 //保留两位小数 //kruskal 并查集 #include <iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; typedef pair<double,double>PII; const int maxe=6000+5; const int maxv=100+5; struct Edge{ int from,to; double weight; }; bool operator<(const Edge&E1,const Edge&E2) { return E1.weight<E2.weight; } Edge edges[maxe]; int parent[maxv]; PII num[maxv]; int find(int x) { return x==parent[x]?x:parent[x]=find(parent[x]); } int main() { int v; while(scanf("%d",&v)==1) { for(int i=0;i<v;i++) { cin>>num[i].first>>num[i].second; } for(int i=1;i<=v;i++) parent[i]=i; int ans=0; for(int i=0;i<v-1;i++) for(int j=i+1;j<v;j++) { edges[ans].from=i+1; edges[ans].to=j+1; edges[ans].weight=hypot(num[i].first-num[j].first,num[i].second-num[j].second); ans++; } sort(edges,edges+ans); double sum=0; for(int i=0;i<ans;i++) { int p1=find(edges[i].from); int p2=find(edges[i].to); if(p1==p2) continue; parent[p1]=p2; sum+=edges[i].weight; } printf("%.2f\n",sum); } return 0; }
相关文章推荐
- 最小生成树 (hdu)1102 1162 1233 1301 1863 7875 7873
- HDU 1162 Eddy's picture
- HDU1162-Eddy's picture-最小生成树(prim算法模板)
- hdu 1162 Eddy's picture(最小生成树Kruskal)
- HDU-1162-Eddy's picture
- hdu1162-Eddy's picture
- HDU 1162 Eddy's picture(图论-最小生成树)
- hdu 1162 Eddy's picture
- HDU 1162 最小生成树
- hdu 1162
- HDU 1162 Eddy's picture(最小生成树)
- hdu1162——初学最小生成树
- Hdu-1162 Eddy's picture
- HDU 1162 Eddy's picture (最小生成树)
- HDU 1162 Eddy's picture
- HDU-1162(最小生成树)
- hdu_1162 Eddy's picture
- hdu 1162
- hdu 1162 最小生成树(Kruskal)
- hdu 1162(Kruskal)