A. 一道應用迪傑斯特拉演算法的C語言題。求改錯
知識教學計劃此項計劃粗的吃的醋
B. 自考!我今年專科畢業,電子信息工程技術,報考了明年4月杭州電子科技大學。
自考貴在堅持 不過確實能學到很多東西
C. 杭電「一個人的旅行」,我錯哪
#include<stdio.h>
#include<string.h>
intt,s,d;
#defineMAXSIZE1100
#defineMAXSIZE2MAXSIZE+10
intused[MAXSIZE2];
unsignedintmap[MAXSIZE2][MAXSIZE2];
intdis[MAXSIZE2];
intcun[MAXSIZE2];
inti,j;
voidinit()
{
memset(map,1,sizeof(map));
memset(dis,1,sizeof(dis));
memset(used,0,sizeof(used));
memset(cun,1,sizeof(cun));
return;
}
voidinput()
{
inta,b,c,k;
for(i=0;i<t;i++)
{
("%d%d%d",&a,&b,&c);
if(map[a][b]>c)
map[a][b]=map[b][a]=c;
}
for(i=1;i<=s;i++)
{
scanf("%d",&k);
dis[k]=0;
}
return;
}
voidwork()
{
intmin;
while(1)
{
min=0;
for(i=1;i<=MAXSIZE;i++)
{
if(!used[i]&&dis[i]<dis[min])
min=i;
}
if(min==0)break;
used[min]=1;
for(i=1;i<=MAXSIZE;i++)
{
if(dis[i]>dis[min]+map[min][i])
dis[i]=dis[min]+map[min][i];
}
}
return;
}
voidout()
{
unsignedintlast=-1;
intz;
for(i=1;i<=d;i++)
{
scanf("%d",&z);
cun[i]=dis[z];
}
for(i=1;i<=d;i++)
{
if(cun[i]<last)
last=cun[i];
}
printf("%d ",last);
}
intmain()
{
while(scanf("%d%d%d",&t,&s,&d)==3&&s+d+t)
{
init();
input();
work();
out();
}
return0;
}