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

青云现在要将 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。

输出格式

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

样例输入

4
1 2 3 4
1 2
2 3
3 4

样例输出

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给我报上这个比赛,结果他自己都不做了,我就做出一个

 /*floyd算法:直接做就可以了,暴力统计结果*/
#include<iostream>
using namespace std;
#define N 510
long long jz[N][N];
#include<cstdio>
#include<cstring>
int a[N],n,x,y;
int gcd(int b,int c)
{
if(!c)
return b;
return gcd(c,b%c);
}
void input()
{
scanf("%d",&n);
memset(jz,,sizeof(jz));
for(int i=;i<=n;++i)
{
scanf("%d",&a[i]);
}
for(int i=;i<=n-;++i)
{
scanf("%d%d",&x,&y);
jz[x][y]=;jz[y][x]=;
}
}
void floyed()
{
for(int k=;k<=n;++k)
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
jz[i][j]=min(jz[i][j],jz[i][k]+jz[k][j]);
}
int main()
{
input();
floyed();
long long ans=;
for(int i=;i<=n;++i)
for(int j=i+;j<=n;++j)
{
if(gcd(a[i],a[j])==)
{
ans+=jz[i][j];
}
}
cout<<ans<<endl;
return ;
}

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. macbook 我们需要买吗

    能否写出好代码与是否使用“好”的电脑是没有直接关系的.

  2. wget进行整站下载

    wget加上参数之后,即可成为相当强大的下载工具. wget -r -p -np -k http://xxx.com/abc/ -r,  --recursive(递归)          specif ...

  3. 在Eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误

    在eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误 原因:Tomcat被删除或者是重新安装,并且安装目录改变了. ...

  4. 优化磁盘I/O

    管理I/O,避免过度地寻道可以让硬盘更快.顺序I/O和随机I/O之间的性能差异随便就可以达到40:1,可能更多.这在数据库服务器中尤其重要,因为数据库的日志是以顺序格式写的.选择合适的硬件,合理地配置 ...

  5. [Visual Studio Online] 移除Work Item(Feature、Backlog item、Task)

    [Visual Studio Online] 移除Work Item(Feature.Backlog item.Task) 移除 项目的开发过程中,使用Visual Studio Online来做Sc ...

  6. C# 生成中间含有LOGO的二维码

    效果如下: 1.无LOGO的二维码: 2.含有LOGO的二维码: 一.下载QrCode程序集: 使用的程序集有: 下载地址: http://zxingnet.codeplex.com/ 二.QRCod ...

  7. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q63-Q65)

    Question 63You have a SharePoint farm that has more than 100 custom Features.You upgrade several Fea ...

  8. 错误:升级为xcode8之后无法上网的解决方法

    主要是在info.list中增加以下的节点,因为XCode开始所有的http都转为https来联网了. 添加类型为Dictionary的:NSAppTransportSecurity 再添加节点为:N ...

  9. iOS设计模式之备忘录模式

    备忘录模式 基本理解 这个模式有三个关键角色:原发器(Originator).备忘录(Memento).看管人(caretaker).三者的基本关系是:原发器创建一个包含其状态的备忘录,并传给看管人. ...

  10. UITabBarController 微信

    AppDelegate.m #import "AppDelegate.h" #import "FirstViewController.h" #import &q ...