记录编号 348719 评测结果 AAAAAAAA
题目名称 旅行计划 最终得分 100
用户昵称 GravatarZwoi_John Price 是否通过 通过
代码语言 C 运行时间 0.004 s
提交时间 2016-11-14 15:43:04 内存使用 0.33 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. int path[101]={0},mp[101][101]={0},inf=99999999,dis[101],m,n,v;
  3. void find(int x)
  4. {
  5. if (x==v) printf("%d ",x);
  6. else
  7. {
  8. find(path[x]);
  9. printf("%d ",x);
  10. }
  11. }
  12. int main()
  13. {
  14. int i,min,k,k1,j,mk[101]={0},t2,t1,t3;
  15. freopen("djs.in","r",stdin);
  16. freopen("djs.out","w",stdout);
  17. scanf("%d %d %d",&n,&m,&v);
  18. for (i=0;i<n;i++)
  19. {
  20. for (j=0;j<n;j++)
  21. {
  22. mp[i][j]=inf;
  23. }
  24. }
  25. for (i=1;i<=m;i++)
  26. {
  27. scanf("%d %d %d",&t1,&t2,&t3);
  28. mp[t1][t2]=t3;
  29. }
  30. for (i=0;i<n;i++) dis[i]=inf;
  31. dis[v]=0;
  32. for (i=0;i<=n-1;i++)
  33. {
  34. min=inf+1;
  35. for (j=0;j<n;j++)
  36. {
  37. if ((mk[j]!=1)&&(dis[j]<min))
  38. {
  39. min=dis[j];
  40. k=j;
  41. }
  42. }
  43. mk[k]=1;
  44. for (k1=0;k1<n;k1++)
  45. {
  46. if ((mp[k][k1]+dis[k]<dis[k1])&&(k!=k1))
  47. {
  48. dis[k1]=mp[k][k1]+dis[k];
  49. path[k1]=k;
  50. }
  51. }
  52. }
  53. for (i=0;i<n;i++)
  54. {
  55. printf("%d:\n",i);
  56. if ((i==v)||(dis[i]==inf)) printf("no\n");
  57. else
  58. {
  59. printf("path:");
  60. find(i);
  61. printf("\n");
  62. printf("cost:%d\n",dis[i]);
  63. }
  64. }
  65. fclose(stdin);
  66. fclose(stdout);
  67. return 0;
  68. }