水一水

枚举各个质数,把是这个数倍数的点留下,跑直径,没了

 #include <bits/stdc++.h>
using namespace std;
int h,t,n,p,q,M,N;
int dis[],lis[],fir[],nex[],to[];
vector<int> po[];
map<int,int> ma;
bitset<> vis,ok,v;
void add(int p,int q)
{
to[++M]=q;nex[M]=fir[p];fir[p]=M;
}
int bfs(int now)
{
dis[now]=;vis[now]=;int lo=,id=;
v.reset();v[now]=;
for(lis[h=t=]=now;h<=t;h++)
for(int i=fir[lis[h]];i;i=nex[i])
if(ok[to[i]] && !v[to[i]])
{
lis[++t]=to[i];
vis[to[i]]=;v[to[i]]=;
dis[to[i]]=dis[lis[h]]+;
if(dis[to[i]]>lo) lo=dis[to[i]],id=to[i];
}
return id;
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d",&p,&q),add(p,q),add(q,p);
for(int i=;i<=n;i++)
{
scanf("%d",&t);
for(int j=;j<=sqrt(t);j++)
{
if(t%j==)
po[ma[j]?ma[j]:(ma[j]=++N)].push_back(i);
while(t%j==)
t/=j;
}
if(t>) po[ma[t]?ma[t]:(ma[t]=++N)].push_back(i);
}
int L=;
for(int i=;i<=N;i++)
{
ok.reset();vis.reset();
for(int j=;j<po[i].size();j++)
ok[po[i][j]]=;//,printf("%d ",po[i][j]);
// puts("");
for(int j=;j<po[i].size();j++)
if(!vis[po[i][j]])
L=max(L,dis[bfs(bfs(po[i][j]))]);
}
printf("%d\n",L);
return ;
}

【填坑】loj6159. 「美团 CodeM 初赛 Round A」最长树链的更多相关文章

  1. 「美团 CodeM 初赛 Round A」最长树链

    题目描述 Mr. Walker 最近在研究树,尤其是最长树链问题.现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1.请求出这条最长的树链的长度. 输入格式 ...

  2. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  3. loj #6177. 「美团 CodeM 初赛 Round B」送外卖2 状压dp floyd

    LINK:#6177.美团 送外卖2 一道比较传统的状压dp题目. 完成任务 需要知道自己在哪 已经完成的任务集合 自己已经接到的任务集合. 考虑这个dp记录什么 由于存在时间的限制 考虑记录最短时间 ...

  4. 【loj6177】「美团 CodeM 初赛 Round B」送外卖2 Floyd+状压dp

    题目描述 一张$n$个点$m$条边的有向图,通过每条边需要消耗时间,初始为$0$时刻,可以在某个点停留.有$q$个任务,每个任务要求在$l_i$或以后时刻到$s_i$接受任务,并在$r_i$或以前时刻 ...

  5. Loj #6164. 「美团 CodeM 初赛 Round A」数列互质

    link : https://loj.ac/problem/6164 莫队傻题,直接容斥做. #include<bits/stdc++.h> #define maxn 100005 #de ...

  6. LiberOJ#6178. 「美团 CodeM 初赛 Round B」景区路线规划 概率DP

    题意 游乐园被描述成一张 n 个点,m 条边的无向图(无重边,无自环).每个点代表一个娱乐项目,第 i 个娱乐项目需要耗费 ci 分钟的时间,会让小 y 和妹子的开心度分别增加 h1i ,h2i ,他 ...

  7. 「美团 CodeM 初赛 Round A」试题泛做

    最长树链 树形DP.我们发现gcd是多少其实并不重要,只要不是1就好了,此外只要有一个公共的质数就好了.计f[i][j]表示i子树内含有j因子的最长链是多少.因为一个数的不同的质因子个数是log级别的 ...

  8. loj6177 「美团 CodeM 初赛 Round B」送外卖2 最短路+状压dp

    题目传送门 https://loj.ac/problem/6177 题解 一直不知道允不允许这样的情况:取了第一的任务的货物后前往配送的时候,顺路取了第二个货物. 然后发现如果不可以这样的话,那么原题 ...

  9. 题解 [美团 CodeM 初赛 Round B]景区路线规划

    有个影响因素k,显然不能高斯消元 n和k都不大,可以直接\(O(nk)\)跑DP 然而带上时间这一影响因素后的转移颇为难写,我从6点直接调到9点最后还是只能dfs爆搜骗了55pts 考场上推方程一定要 ...

随机推荐

  1. matlab之细胞数组

    学习matlab的一个博客:https://blog.csdn.net/smf0504/article/details/51814362 Matlab从5.0版开始引入了一种新的数据类型—细胞( ce ...

  2. LoadRunner中的函数

    函数是LoadRunner提供给性能测试工程师的利器,有了它,性能测试工程师可以对脚本进行更为自由的开发,更适应实际测试的需求,进一步扩展脚本的功能. LoadRunner函数的格式: 返回值  函数 ...

  3. Use trained sklearn model with pyspark

    Use trained sklearn model with pyspark   from pyspark import SparkContext import numpy as np from sk ...

  4. HDU5875Function(单调队列)

    The shorter, the simpler. With this problem, you should be convinced of this truth.      You are giv ...

  5. ACM学习历程——POJ3468 A Simple Problem with Integers(线段树)

    Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...

  6. 怎么在docker容器的mysql的编码格式变为utf8

    第一个方法: 1.  编辑MySql的配置文件 MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是/etc/my.cnf ...

  7. c# link 学习网站

    http://www.cnblogs.com/shanyou/p/4353433.html

  8. java 资料必备

    学习java个人以为必备的资料很多,边上课,边总结: 1.jdk API这个是必须的,什么资料都没有这个权威 2. javaJAVA 2核心技术7th 3. BJava就业培训教程张孝祥 4. thi ...

  9. TCP 登录实现代码

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  10. 条款20.宁以pass-by-reference-to-const替换pass-by-vlaue

        缺省情况下c++以by value的方式传递对象至(或来自)函数.除非你另外指定,否则函数参数都是以实际实参的复件(副本)为初值,而调用端所获得的亦是函数返回值的一个复件.这些复件是由对象的c ...