#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MVNum 100//最大顶点数
#define MAXEDGE 10000
#define datatype int
#define Maxint 32767
#define MAX 100
enum boolean{FALSE,TRUE};
int D1[MVNum],p1[MVNum];
int D[MVNum][MVNum],p[MVNum][MVNum];
typedef struct
{
int begin;
int end;
int weight;
}edge;
typedef struct
{
int adj;
int weight;
}AdjMatrix[MAX][MAX];
typedef struct
{
AdjMatrix arc;
int vexnum, arcnum;
}MGraph;
void CreatGraph(MGraph *,int n,int m);//函数申明
void sort(edge* ,MGraph *,int m);
void MiniSpanTree(MGraph *,int n,int m);
int Find(int *, int );
void Swapn(edge *, int, int);
void Dijkstra(MGraph *G,int v1,int n) ;
void Floyd(MGraph *G,int n);
void save(MGraph *G,int n1,int m1)
{
FILE *fp;
fp=fopen("sheji.txt","a+");
fprintf(fp,"景点(%d ,%d)有边,且它们之间的距离为%4d\n",n1,m1,G->arc[n1][m1].weight);
fclose(fp);
}
void CreatGraph(MGraph *G,int n,int m)//构件图
{
int i,j,n1,m1;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
G->arc[i][j].adj=G->arc[j][i].adj=0;
G->arc[i][j].weight=G->arc[j][i].weight=Maxint;
}
}
for( i=1;i<=m;i++)//输入边和权值
{
printf("\n请输入有边的2个顶点:\n");
scanf("%d%d",&n1,&m1);
while(n1<0||m1<0||n1>n||m1>n)
{
printf("输入的数字不符合要求 请重新输入:");
scanf("%d%d",&n1,&m1);