prim
给出一个图,求任意两点间的最短距离 prim算法实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
#define M 101
#define MAX 1000000
int map[M][M],v[M];
int main()
{
int n,x,y,flag;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&x);
map[i][j]=x;
}
}
scanf("%d%d",&x,&y);
printf("%d %d\n",x,y);
memset(v,0,sizeof(v));
v[x]=1;
int total=0;
while(!v[y])
{
int Min=MAX;
for(int i=1;i<=n;i++)
{
if(!v[i]&&map[x][i]<Min)
{
Min=map[x][i];
flag=i;
cout<<"i=="<<i<<endl;
}
}
v[flag]=1;
total=Min;
for(int i=1;i<=n;i++)
{
if(!v[i]&&(map[x][i]>(total+map[flag][i]))) map[x][i]=total+map[flag][i];
}
}
printf("%d\n",total);
return 0;
}
浙公网安备 33010602011771号