题目链接:https://vjudge.net/problem/HYSBZ-1491

题目大意:中文题目,题意见题目

题目分析:由于数据量很小,可以考虑进行Floyd算法。

第一次进行Floyd算法,算出两点之间的最短路径,另外记录下这两点之间有多长条最短路走法。

第二场进行类似Floyd算法的方法,计算经过k点,是否可以走出最短路,如果可以的话,进行计算。

注意在两次统计计算的过程中,要用组合的方法,即num[i][j]=num[i][k]*num[k][j];

给出代码:

 #include <iostream>
 #include <cstdio>
 #include <queue>
 #include <cstring>
 #include <string>
 using namespace std;

 int n,m;
 +][+];
 +][+];
 int inf=0x3f3f3f;
 ];
 int main()
 {
     cin>>n>>m;
     memset(node,inf,sizeof(node));
     //memset(node1,0,sizeof(node1));
     // memset(mark,0,sizeof(mark));
     ; i<m; i++)
     {
         int a,b,c;
         scanf("%d%d%d",&a,&b,&c);
         node[a][b]=c;
         node[b][a]=c;
         node1[a][b]=;
         node1[b][a]=;
     }
     // for(int i=1; i<=n; i++)
     //      node[i][i]=0;
   /*  for(int i=1; i<=n; i++)
     {
         for(int j=1; j<=n; j++)
         {
             cout<<node[i][j]<<" ";
         }
         cout<<endl;
     }
     cout<<endl;*/
     ; k<=n; k++)
     {
         ; i<=n; i++)
         {
             ; j<=n; j++)
             {
                 if(k!=i&&k!=j&&i!=j)
                 {
                     if(node[i][j]==node[i][k]+node[k][j])
                         node1[i][j]=node1[i][j]+(node1[i][k]*node1[k][j]);
                     else if(node[i][j]>node[i][k]+node[k][j])
                     {
                         node1[i][j]=node1[i][k]*node1[k][j];
                         node[i][j]=node[i][k]+node[k][j];
                     }
                 }
                // node[i][j]=
             }
         }
     }
    /* for(int i=1; i<=n; i++)
     {
         for(int j=1; j<=n; j++)
         {
             cout<<node[i][j]<<" ";
         }
         cout<<endl;
     }*/
     ; k<=n; k++)
     {
         ; i<=n; i++)
         {
             ; j<=n; j++)
             {

                 )
                 {
                     mark[k]+=((node1[i][k]*node1[k][j])/node1[i][j]);
                     // cout<<mark[k]<<" "<<k<<" "<<i<<" "<<j<<endl;
                  //   cout<<node1[i][k]<<" "<<node1[k][j]<<endl;
                 }
             }
         }
     }
     ; i<=n; i++)
         printf("%.3f\n",mark[i]);
     ;
 }

最新文章

  1. C 标准库系列之errno.h
  2. freeregex-0.01 使用文档
  3. .NET 客户端上传本地excel文件到服务器上,并在客户端显示
  4. UVa 11178 (简单练习) Morley&#39;s Theorem
  5. linux的一点一滴---open
  6. Linux C 编程内存泄露检測工具(二):memwatch
  7. app间互相启动及传参数
  8. java操作txt文本(二):删除文本括号内的内容
  9. 【Linux篇】--sed的用法
  10. Confluence 6 在升级过程中查看合并日志
  11. kaptcha生成java验证码
  12. java中random的几个方法的使用Math.random()和random().
  13. 10.12Django form表单
  14. 【Python54.1--豆瓣登录】
  15. Redis事件订阅和持久化存储
  16. Win10系列:JavaScript综合实例2
  17. (11)线程池(最新的concurrent.futures包去开启)
  18. API:详解 pandas.read_csv
  19. selenium-python:登录网站并签到
  20. [LeetCode] 697. Degree of an Array_Easy tag: Hash Table

热门文章

  1. Eclipse中SVN设置文件为ignore后重新添加至版本控制
  2. Spring学习(1)----入门学习(附spring-framework下载地址)
  3. [转] 传说中的WCF
  4. python 标准库 -- unittest
  5. Laravel踩坑笔记——illuminate/html被抛弃
  6. ecshop调用指定分类和个数的文章列表
  7. chrome 浏览器最小字体为12px 的解决办法
  8. CentOS下安装php的mbstring扩展
  9. href=&quot;#&quot; 的坑
  10. ps命令学习笔记