记录编号 |
348719 |
评测结果 |
AAAAAAAA |
题目名称 |
旅行计划 |
最终得分 |
100 |
用户昵称 |
Zwoi_John Price |
是否通过 |
通过 |
代码语言 |
C |
运行时间 |
0.004 s |
提交时间 |
2016-11-14 15:43:04 |
内存使用 |
0.33 MiB |
显示代码纯文本
#include<stdio.h>
int path[101]={0},mp[101][101]={0},inf=99999999,dis[101],m,n,v;
void find(int x)
{
if (x==v) printf("%d ",x);
else
{
find(path[x]);
printf("%d ",x);
}
}
int main()
{
int i,min,k,k1,j,mk[101]={0},t2,t1,t3;
freopen("djs.in","r",stdin);
freopen("djs.out","w",stdout);
scanf("%d %d %d",&n,&m,&v);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
mp[i][j]=inf;
}
}
for (i=1;i<=m;i++)
{
scanf("%d %d %d",&t1,&t2,&t3);
mp[t1][t2]=t3;
}
for (i=0;i<n;i++) dis[i]=inf;
dis[v]=0;
for (i=0;i<=n-1;i++)
{
min=inf+1;
for (j=0;j<n;j++)
{
if ((mk[j]!=1)&&(dis[j]<min))
{
min=dis[j];
k=j;
}
}
mk[k]=1;
for (k1=0;k1<n;k1++)
{
if ((mp[k][k1]+dis[k]<dis[k1])&&(k!=k1))
{
dis[k1]=mp[k][k1]+dis[k];
path[k1]=k;
}
}
}
for (i=0;i<n;i++)
{
printf("%d:\n",i);
if ((i==v)||(dis[i]==inf)) printf("no\n");
else
{
printf("path:");
find(i);
printf("\n");
printf("cost:%d\n",dis[i]);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}