青云的机房组网方案(简单)

青云现在要将 nn 个机房连成一个互相连通的网络。工程师小王设计出一个方案:通过在 nn 个机房之间铺设 n-1n−1 条双向的光纤,将所有的机房连接。可以假设数据在两个机房之间的光纤传输需要 11 单位时间。每个机房 ii 有一个初始值 a_ia​i​​,当两个机房的初始值之间互质时,我们认为这两个机房之间的传输性能是非常重要的。请帮小王计算出所有数值互质的机房对之间的传输时间之和。

输入格式

第一行输入一个正整数 nn,第二行输入 nn 个正整数 a_1...a_na​1​​...a​n​​,表示 nn 个机房的初始值。

接下来输入 n-1n−1 行,每行输入两个数 a,ba,b,表示机房 aa 和机房 bb 之间有一条双向网络管道。

对于简单版本:n \leq 500n≤500,1 \leq a_i \leq 501≤a​i​​≤50;

对于中等版本:n \leq 10000n≤10000, 1 \leq a_i \leq 5001≤a​i​​≤500;

对于困难版本:n \leq 100000n≤100000,a_i \leq 100000a​i​​≤100000。

输出格式

输出一行,表示所有初始值互质的机房对的传输时间和。

样例输入

  1. 4
  2. 1 2 3 4
  3. 1 2
  4. 2 3
  5. 3 4

样例输出

  1. 8

提示信息

对于第一组样例,每一组初始值互质的机房对的传输时间如下:

(1,2)(1,2):11

(1,3)(1,3):22

(1,4)(1,4):33

(2,3)(2,3):11

(3,4)(3,4):11

所以,所有初始值互质的机房对的传输时间和为 1+2+3+1+1=81+2+3+1+1=8

xyd给我报上这个比赛,结果他自己都不做了,我就做出一个

  1. /*floyd算法:直接做就可以了,暴力统计结果*/
  2. #include<iostream>
  3. using namespace std;
  4. #define N 510
  5. long long jz[N][N];
  6. #include<cstdio>
  7. #include<cstring>
  8. int a[N],n,x,y;
  9. int gcd(int b,int c)
  10. {
  11. if(!c)
  12. return b;
  13. return gcd(c,b%c);
  14. }
  15. void input()
  16. {
  17. scanf("%d",&n);
  18. memset(jz,,sizeof(jz));
  19. for(int i=;i<=n;++i)
  20. {
  21. scanf("%d",&a[i]);
  22. }
  23. for(int i=;i<=n-;++i)
  24. {
  25. scanf("%d%d",&x,&y);
  26. jz[x][y]=;jz[y][x]=;
  27. }
  28. }
  29. void floyed()
  30. {
  31. for(int k=;k<=n;++k)
  32. for(int i=;i<=n;++i)
  33. for(int j=;j<=n;++j)
  34. jz[i][j]=min(jz[i][j],jz[i][k]+jz[k][j]);
  35. }
  36. int main()
  37. {
  38. input();
  39. floyed();
  40. long long ans=;
  41. for(int i=;i<=n;++i)
  42. for(int j=i+;j<=n;++j)
  43. {
  44. if(gcd(a[i],a[j])==)
  45. {
  46. ans+=jz[i][j];
  47. }
  48. }
  49. cout<<ans<<endl;
  50. return ;
  51. }

floyd算法 青云的机房组网方案(简单)的更多相关文章

  1. 青云的机房组网方案(简单+普通+困难)(虚树+树形DP+容斥)

    题目链接 1.对于简单的版本n<=500, ai<=50 直接暴力枚举两个点x,y,dfs求x与y的距离. 2.对于普通难度n<=10000,ai<=500 普通难度解法挺多 ...

  2. 2016 计蒜之道 初赛 第一场 D 青云的机房组网方案 (虚树)

    大意: 给定树, 点$i$的点权为$a_i$, 求$\sum\limits_{a_i \perp a_j}dis(i,j)$ 中等难度可以枚举每条边的贡献, 维护子树内每个数出现次数$a$, 转化为求 ...

  3. 最短路之Floyd算法

    1.介绍 floyd算法只有五行代码,代码简单,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3),可以求多源最短路问题. 2.思想: Floyd算法的基本思想如下:从任意节点A到任意节点 ...

  4. 多源最短路——Floyd算法

    Floyd算法 问题的提出:已知一个有向网(或者无向网),对每一对定点vi!=vj,要求求出vi与vj之间的最短路径和最短路径的长度. 解决该问题有以下两种方法: (1)轮流以每一个定点为源点,重复执 ...

  5. Floyd算法简单实现(C++)

    图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...

  6. CCF(通信网络):简单DFS+floyd算法

    通信网络 201709-4 一看到题目分析了题意之后,我就想到用floyd算法来求解每一对顶点的最短路.如果一个点和任意一个点都有最短路(不为INF),那么这就是符合的一个答案.可是因为题目超时,只能 ...

  7. 算法笔记_069:Floyd算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 使用Floyd算法得到最短距离示例 2.2 具体编码   1 问题描述 何为Floyd算法? Floyd算法功能:给定一个加权连通图,求取从每一个顶点到其它所 ...

  8. 最短路径Floyd算法【图文详解】

    Floyd算法 1.定义概览 Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被 ...

  9. 图论篇3——最短路径 Dijkstra算法、Floyd算法

    最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...

随机推荐

  1. 继续寻找app开发的技术方案

    大概12年下半年开始,才有app开发已经来到身边的感觉. 但也一直只是感觉,没想到自己得亲身上阵. 由于要一个人做(帮朋友倒腾倒腾),而且要跨平台,而且前后台都要弄,而且时间有限. 最终选了web方式 ...

  2. JavaMail入门第二篇 创建邮件

    JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.internet.MimeMessage类来 ...

  3. mysql启动报错:Starting MySQL...The server quit without updating PID file

    在mysql的data目录下误删除了mysql-bin.000001,mysql-bin.000002等文件,但是没有删除mysql-bin.index文件,此时启动mysql就会报错: Starti ...

  4. C# 分层 三层架构

    Hello! 三层架构↓↓↓↓↓↓ 三层架构分为:表现层(UI(User Interface)).业务逻辑层(BLL(Business Logic Layer)).数据访问层(DAL(Data Acc ...

  5. <SharePoint 2013 用户界面设计与品牌化>学习系列之---基础

    什么是SharePoint界面与品牌化设计 这一章主要介绍了: 为什么要品牌化SharePoint 介绍一些内部和互联网的SharePoint网站 简单 中等 复杂的三种品牌化方式 简单难度: 普通用 ...

  6. 2015年第2本(英文第1本):《The Practice of Programming》

    2015年计划透析10本英文原著,最开始选定的第一本英文书是<Who Moved my Cheese>,可是这本书实在是太短.太简单了,总体的意思就是要顺应变化,要跳出自己的舒适区,全文不 ...

  7. Unity与Android的相互交互

    1.Unity调用Android. Unity块代码: using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.play ...

  8. iOS开发 使用RMStore简化内购代码 + 内购买订单验证

    现在很多的app里面都添加了应用内购买,网上关于苹果证书的生成和设置的教程比较多,这里就不多赘述了,推荐几个个人觉得说的比较详细的网址: http://www.jianshu.com/p/86ac7d ...

  9. json深度详解及org.json库

    了解json  (Javascript Object Notation) 网站:http://json.org/ english JSON (JavaScript Object Notation) i ...

  10. Windows下查看端口占用

    最近在重新安装Mysql的时候,发现3306默认端口被占用了.类似的情况常常遇到,想查看到底是哪个程序把这个端口占用了. 下面是我google找到的方法,和大家分享. 1. 首先,使用netstat ...