zoukankan      html  css  js  c++  java
  • 剑鱼行动(普里姆算法)

    题意

    Description

    给出N个点的坐标,对它们建立一个最小生成树,代价就是连接它们的路径的长度,现要求总长度最小。N的值在100以内,坐标值在[-10000,10000].结果保留二位小数

    Input

    5 ---------------5个点
    0 0 ---------------5个点点的坐标
    0 1
    1 1
    1 0
    0.5 0.5

    Output

    2.83




    分析

    先算出点与点之间的距离

    距离=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]))



    var
    n,i,j,k,t:longint;
    tj,min:real;
    a:array[0..200,0..200]of real;
    x,y:array[0..200]of real;
    f:array[0..200]of longint;
    begin
        readln(n);
        fillchar(a,sizeof(a),0);
        fillchar(f,sizeof(f),0);
        for i:=1 to n do
        readln(x[i],y[i]);
        for i:=1 to n do
        for j:=1 to n do
        a[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
        f[1]:=1;
        tj:=0;
        for i:=1 to n-1 do
        begin
            min:=maxlongint;
            for j:=1 to n do
            if f[j]=1 then
              for k:=1 to n do
              if f[k]=0 then
              if (a[j,k]<min)and(a[j,k]<>0) then
              begin
                  min:=a[j,k];
                  t:=k;
              end;
            if min<>maxint then
            begin
                tj:=tj+min;
                f[t]:=1;
            end;
        end;
        write(tj:0:2);
    end.



  • 相关阅读:
    python setup.py install 失败
    Python xlsx 读取
    Java ArrayList Sort
    java console ( mac osx ) 命令行编码
    Lucene Query Term Weighting
    Fast Intro To Java Programming (2)
    随感 20150512
    循环数组中找查找某个数值
    数字内组合得到下一个比该数大的数
    android activity空指针异常解决问题解决
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500147.html
Copyright © 2011-2022 走看看