zoukankan      html  css  js  c++  java
  • UVA 10034 Freckles

    题目信息:10034 - Freckles

        本题主要考察最小生成树的生成问题,这里是用链表写的,可能没有用数组简便,但练练链表。题目并没有构造出最小生成树,可以用邻接数组来构造出最小生成树,再用bfs遍历出最小生成树。

    #include<iostream>
    #include<list>
    #include<cmath>
    #include<cstdio>
    using namespace std;


    //利用最小生成树解决问题


    typedef struct node
    {
    double x;
    double y;
    }Node;

    int main()
    {
    int n;
    cin>>n;
    cin.ignore();
    while(n--)
    {
    int m,t;
    double sum=0;
    Node temp;
    list<Node> ls1,ls2;
    cin>>m;
    for(t=0;t<m;t++)
    {
    cin>>temp.x>>temp.y;
    ls1.push_back(temp);
    }
    ls2.push_back(ls1.front());
    ls1.pop_front();
    while(!ls1.empty())
    {
    double tMin=0x7fffffff,temp1;
    list<Node>::iterator iter1,iter2,iter3;
    for(iter2=ls2.begin();iter2!=ls2.end();++iter2)
    {//每次找出距ls2集合中最近的点然后把该店从ls1中删除并加如ls2
    for(iter1=ls1.begin();iter1!=ls1.end();++iter1)
    {
    temp1=pow((iter1->x-iter2->x),2)+pow(iter1->y-iter2->y,2);
    if(tMin>=temp1)
    {
    iter3=iter1;
    tMin=temp1;
    }
    }
    }
    sum+=sqrt(tMin);
    temp.x=iter3->x;temp.y=iter3->y;
    ls2.push_back(temp);
    ls1.erase(iter3);
    }
    printf("%.2lf\n",sum);
    //cout<<sum<<endl;
    if(n>=1) cout<<endl;
    ls2.clear();
    }
    return 0;
    }
  • 相关阅读:
    gradle build scan 插件使用
    gradle 配置java 项目maven 依赖
    gradle 插件
    gradle java 简单项目使用
    gradle 命令行
    gradle wrapper 简单使用
    gradle 安装试用
    linux 使用asciinema 进行命令行屏幕录制共享
    ansible安装基本使用
    ansible playbook 使用
  • 原文地址:https://www.cnblogs.com/redlight/p/2394073.html
Copyright © 2011-2022 走看看