0
点赞
收藏
分享

微信扫一扫

SDUTOJ 2929 人活着系列之芳姐和芳姐的猪(最短路)

玩物励志老乐 2023-04-20 阅读 71



人活着系列之芳姐和芳姐的猪




Time Limit: 1000ms   Memory limit: 65536K


题目描述


百年来,人活着是为了什么这个问题一直萦绕在人的脑海里,也一直困扰着人的思想。人活着就是活着了,为活着本身而活着,而不是为活着之外的任何事物而活着的。正因为活着,所以活着。对,是有点莫明其妙,但也是一句最受用的话。

m个猪圈,顺便在u,终点.....芳姐和猪们约定好,每天去一个固定猪圈去吃饭,芳姐为了不累着她可爱的猪们,想知道所有的猪吃饭走的最短路程是多少?


输入


n(1<=n<=350),猪圈个数 k(1<=k<=1200).(猪的编号为 N+1行 .

n+k+1行:v,两猪圈间距离(注:有的猪圈可能是空的,也可能有多头猪,保证<font face='\"Times' new="" roman,="" serif\"="">m个猪圈连通。


输出


 


示例输入


3 4 5 2 3 4 1 2 1 1 3 5 2 3 7 2 4 3 3 4 5


示例输出


8


提示


 


来源


 cz


示例程序



  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.   
  5. #define N 9999999
  6. int n,m,t;  
  7. int q[601],map[601][601],p[2001],num[2001];  
  8. int sum;  
  9. int pp;  
  10.   
  11.   
  12. int main()  
  13. {  
  14.     int i,j,k;  
  15. while(scanf("%d%d%d",&n,&m,&t)!=EOF)  
  16.     {  
  17.         sum = 0;  
  18.         int tt;  
  19. for(i=0; i<n; i++)  
  20.         {  
  21. "%d",&q[i]);  
  22.         }  
  23.   
  24. for(i=1; i<=m; i++)  
  25.         {  
  26. for(j=1; j<=m; j++)  
  27.             {  
  28.                 map[i][j] = N;  
  29.             }  
  30.             map[i][i] = 0;  
  31.         }  
  32.         int x,y,z;  
  33. for(i=0; i<t; i++)  
  34.         {  
  35. "%d%d%d",&x,&y,&z);  
  36. if(map[x][y] >z)  
  37.             {  
  38.                 map[x][y] = z;  
  39.                 map[y][x] = z;  
  40.             }  
  41.         }  
  42.         int ee = N;  
  43. for(i=1; i<=m; i++)  
  44.         {  
  45. for(j=1; j<=m; j++)  
  46.             {  
  47. for(k=1; k<=m; k++)  
  48.                 {  
  49. if(map[j][k] > map[j][i] + map[i][k])  
  50.                     {  
  51.                         map[j][k] = map[j][i] + map[i][k];  
  52.   
  53.                     }  
  54.                 }  
  55.             }  
  56.         }  
  57.         int min;  
  58.         int sum1 = N;  
  59. //printf("%d\n",ee);
  60. for(i=1; i<=m; i++)  
  61.         {  
  62.              min = N;  
  63.              sum = 0;  
  64. for(j=0; j<n; j++)  
  65.             {  
  66.                 min = map[q[j]][i];  
  67.                 sum = sum + min;  
  68.             }  
  69. if(sum1>sum)  
  70.             {  
  71.                 sum1 = sum;  
  72.             }  
  73.         }  
  74. "%d\n",sum1);  
  75. //prime();
  76.     }  
  77. return
  78. }  
  79.    
举报

相关推荐

0 条评论