📄 交通模拟2.c
字号:
#include <stdio.h>
#define MAX 100
void main()
{
int path[MAX];
int s[MAX],u,vnum,w;
int i,j,k,m,n,v0;
long int cost[MAX][MAX],dist[MAX],wm;
scanf("%d",&n);
printf("********************************************\n\n");
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
scanf("%ld",&cost[i][j]);
}
printf("***************************************************\n\n");
printf("输入出发的站点");
scanf("%d",&v0);
printf("输入终点的站点:");
scanf("%d",&m);
for(w=1;w<=n;w++)
{ dist[w]=cost[v0][w];
if(cost[v0][w]<327670)
path[w]=v0;
}
for(w=1;w<=n;w++)
s[w]=0;
s[v0]=1;
vnum=1;
while (vnum<n-1)
{wm=327670;
u=v0;
for(w=1;w<=n;w++)
if(s[w]==0&&dist[w]<wm)
{u=w;
wm=dist[w];
}
s[u]=1;
vnum++;
for(w=1;w<=n;w++)
if(s[w]==0&&dist[u]+cost[u][w]<dist[w])
{dist[w]=dist[u]+cost[u][w];
path[w]=u;
}
}
printf("****%d---->%d:\n\n",v0,m);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%10ld ",cost[i][j]);
printf("\n");
}
printf("\n");
printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n");
for(i=1;i<=n;i++)
if(s[i]==1)
{k=i;
while (k!=v0)
{printf("%d<-",k);
k=path[k];
}
printf("%d ",k);
printf("路程**:%ld \n\n",dist[i]);
}
else
{printf("%d<-%d",i,v0);
printf(" 327670 ");
}
printf("\n\n**********************************************\n\n\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -