zoukankan      html  css  js  c++  java
  • poj3625

    在已有的边上做Prim

    #include<iostream>

    #include<cmath>

    #include<iomanip>

    using namespace std;

    #define infinity 1000000

    class Point2D

    {

    public:

    double x,y;

    };

    Point2D point[1001];

    double map[1001][1001];

    double dis[1001];

    bool flag[1001];

    int n,m;

    int main()

    {

    memset(flag,false,sizeof(flag));

    int c,i,j,k;

    double len;

    double minone;

    scanf("%d%d",&n,&m);

    for(i=1;i<=n;i++)

    cin>>point[i].x>>point[i].y;

    //初始化map

    for(i=1;i<=n;i++)

    map[i][i]=0;

    for(i=1;i<=n;i++)

    for(j=i+1;j<=n;j++)

    {

    map[i][j]=sqrt( pow(point[i].x-point[j].x,2)+pow(point[i].y-point[j].y,2) );

    map[j][i]=map[i][j];

    }

    for(k=0;k<m;k++)

    {

    cin>>i>>j;

    // len+=map[i][j];

    map[j][i]=map[i][j]=0.0;

    }

    //下面用prim求最小生成树

    for(k=1;k<=n;k++)

    dis[k]=map[1][k];

    flag[1]=true;

    len=0.0;

    for(c=1;c<n;c++)

    {

    minone=10000000.0;

    for(i=1;i<=n;i++)

    if(flag[i]==false && dis[i]<minone)

    {

    k=i;

    minone=dis[i];

    }

    flag[k]=true;

    len+=minone;

    for(i=1;i<=n;i++)

    if(flag[i]==false && map[k][i]<dis[i])

    dis[i]=map[k][i];

    }

    cout<<setiosflags(ios::fixed)<<setprecision(2)<<len<<endl;

    return 0;

    }

  • 相关阅读:
    LeetCode344
    LeetCode18四数之和扩展N数之和
    LeetCode383赎金信
    2018-2020创业总结
    LeetCode454四数相加
    普通dll项目添加WPF的Window对象
    WPF中RadioButton的数据绑定
    02 C# 文件压缩与解压
    WPF 使用附加属性声明 ICommand
    自定义WPF分页控件
  • 原文地址:https://www.cnblogs.com/bester/p/3255806.html
Copyright © 2011-2022 走看看