今天碰到一个最小生成树(数据结构基础算法)
巩固了一下 没有什么大的收获。
不过发现原来在程序后面加个system("pause")也能AC;
代码如下:
 #include <iostream>
#include <iostream>
 #include<algorithm>
#include<algorithm>
 #include<cmath>
#include<cmath>
 using namespace std;
using namespace std;
 #define  MAX 101
#define  MAX 101
 #define INFINITE 1000000000
#define INFINITE 1000000000

 struct node
struct node


 {
{
 double a;
    double a;
 double b;
    double b;
 }dot[MAX];
}dot[MAX];

 double value[MAX][MAX];
double value[MAX][MAX];
 bool visit[MAX];
bool visit[MAX];
 double dis[MAX];
double dis[MAX];
 int n;
int n;

 double distance(int i,int j)
double distance(int i,int j)


 {
{
 double temp=0;
    double temp=0;
 temp=sqrt((dot[i].a-dot[j].a)*(dot[i].a-dot[j].a)+(dot[i].b-dot[j].b)*(dot[i].b-dot[j].b));
    temp=sqrt((dot[i].a-dot[j].a)*(dot[i].a-dot[j].a)+(dot[i].b-dot[j].b)*(dot[i].b-dot[j].b));
 return temp;
    return temp;
 }
}

 double  prim()
double  prim()


 {
{
 double sum=0;
    double sum=0;
 int i,j;
    int i,j;
 int k;
    int k;
 memset(visit,false,sizeof(visit));
    memset(visit,false,sizeof(visit));
 for(i=1;i<=n;i++)
    for(i=1;i<=n;i++)

 
     {
{

 dis[i]=value[1][i];
        dis[i]=value[1][i];
 }
    }
 visit[1]=true;
    visit[1]=true;
 int mark;
    int mark;
 double test=10000000000;
    double test=10000000000;
 sum=0;
    sum=0;
 for(j=1;j<=n-1;j++)
    for(j=1;j<=n-1;j++)

 
     {
{
 test=INFINITE;
        test=INFINITE;
 for(i=1;i<=n;i++)
        for(i=1;i<=n;i++)

 
         {
{
 if(visit[i]==false&&dis[i]<test)
            if(visit[i]==false&&dis[i]<test)

 
             {
{

 test=dis[i];
                test=dis[i];
 mark=i;
                mark=i;
 }
            }
 
            
 }
        }
 sum+=test;visit[mark]=true;
        sum+=test;visit[mark]=true;
 for(i=1;i<=n;i++)
        for(i=1;i<=n;i++)

 
         {
{

 if(visit[i]==false&&value[mark][i]<dis[i])
            if(visit[i]==false&&value[mark][i]<dis[i])
 dis[i]=value[mark][i];
                dis[i]=value[mark][i];

 }
        }
 }
    }
 return sum;
    return sum;
 }
}







 int main ()
    int main ()

 
     {
{
 int i,j;
        int i,j;
 scanf("%d",&n);
        scanf("%d",&n);
 for(i=1;i<=n;i++)
        for(i=1;i<=n;i++)

 
         {
{

 scanf("%lf%lf",&dot[i].a,&dot[i].b);
            scanf("%lf%lf",&dot[i].a,&dot[i].b);
 }
        }
 for(i=1;i<=n;i++)
        for(i=1;i<=n;i++)

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

 
             {
{

 value[i][j]=distance(i,j);
                value[i][j]=distance(i,j);
 }
            }

 }
        }
 printf("%.2f\n",prim());
        printf("%.2f\n",prim());
 system("pause");
        system("pause");
 return 0;
        return 0;
 }
}

