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;

    }

  • 相关阅读:
    9.24 Django Form组件
    9.21 form 和Ajax详解
    vue生命周期
    禁止输入框复制粘贴
    【转义字符】HTML 字符实体&lt; &gt: &amp;
    dispatch emit broadcast
    删除git项目
    新建github项目,邀请成员
    git常用命令行
    echarts用法
  • 原文地址:https://www.cnblogs.com/bester/p/3255806.html
Copyright © 2011-2022 走看看