求大神解决
本人菜鸟一只,请教大神这该怎么解决,要交一个地杰特斯拉算法
#include<stdio.h>
#define max 1000
#define num 6
typedef struct Mgraph
{
int vexs[num];
int arcs[num][num];
};
void Dijkstra(Mgraph Gn ,int v0,int path[],int dist[])/*求有向网Gn中v0到其余顶点的最短路径*/
{
int s[num];/*用来记录已经找到了最短路径的顶点*/
int i;
for(i=0;i<num;i++)
{
s[i]=0;
dist[i]=Gn.arcs[v0][i];
if(dist[i]&&dist[i]<max)
path[i]=0;
else
path[i]=-1;
}/*初始化*/
s[v0]=1;/*将v0记录入s*/
int m;
for(m=1;m<num;m++)
{
int min=max;
int v=-1;
int w;
for(w=0;w<num;w++)
{
if(!s[w]&&dist[w]<min)
{
v=w;
min=dist[w];
}
}
if(v==-1)break;
s[v]=1;
int j;
for(j=1;j<num;j++)
{
if(!s[j]&&(min+Gn.arcs[v][j]<dist[j]))
{
dist[j]=min+Gn.arcs[v][j];
path[j]=v;
}
}
}
}
int main()
{
Mgraph Gn;
Gn.arcs={{0,max,10,max,30,100},
{max,0,5,max,max,max},
{max,max,0,50,max,},
{max,max,max,0,max,10},
{max,max,max,20,0,60},
{max,max,max,max,max,0}};
int i;
for(i=0;i<num;i++)
Gn.vexs[i]=i;
int path[num];
int dist[num];
int v0;/*起点*/
printf("请输入起点位置(小于%d):\n",num);
scanf("%d",&v0);
Dijkstra(Gn,v0,path,dist);
for(i=0;i<num;i++)
{
if(dist[i]==max)
{
printf("从节点%d到节点%d不可达\n",v0,i);
}
else
{
printf("从节点%d到节点%d的最短路径长度为%d\n",v0,i,dist[i]);
}
}
}
最后报错,cpp:56: error: expected primary-expression before '{' token
cpp:56: error: expected `;' before '{' token
56行为 Gn.arcs={{0,max,10,max,30,100},
{max,0,5,max,max,max},
{max,max,0,50,max,},
{max,max,max,0,max,10},
{max,max,max,20,0,60},
{max,max,max,max,max,0}};
求救,为什么会出现这种问题