#include <iostream>
#include <malloc.h>
#include <cstring>
#include <stack>
#include <cstdio>
//定义邻接矩阵的大小
#define N 100
#define M 100
using namespace std;
typedef struct node {
int map[N][M];//邻接矩阵
int n;//顶点数
int e;//边数
}MGragh;
void dijkstra(MGragh g,int *dis,int *pre,int v0){
int i,j,k;
bool *visited=(bool *)malloc(sizeof(bool)*g.n);//标记数组
for(i=0;i<g.n;i++){//初始化
if(g.map[v0][i]>0&&i!=0){
dis[i]=g.map[v0][i];
pre[i]=v0;
}
else{
dis[i]=INT_MAX;
pre[i]=-1;
}
pre[v0]=v0;
dis[v0]=0;
}
visited[v0]=true;//标记源点v0为访问过
for(i=1;i<g.n;i++){//运行n-1次
int min=INT_MAX;//初始化
int u;
for(j=0;j<g.n;j++){//寻找未访问过的顶点中权值最小的那个
if(visited[j]==false