摘要:水题 求出三个人每两个间的LCA,然后最小花费就是两两点之间的路径长度之和除以2 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 500005; 6 struct edge{ 7 in...
阅读全文
摘要:求三个点之间距离和的最小值,画个图想想就可以知道这个值就是两两距离之和除以2 两组数据之间要有一个换行 这里PE了很多次 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 1...
阅读全文
摘要:给出一个森林,问u到v的最短距离 可以先对整个图做一次并查集求出个联通分块 对于每一个联通块进行一次Tarjan,不在一个块里面的,ans = -1; 这样写就是复杂度还高一点。。 1 #include 2 #include 3 #include ...
阅读全文
摘要:求两节点之间的距离,直接上Tarjan跑一遍。和上一题差不多就不说了。。 主要就是这里询问很多,用vector跑的很慢,无奈还不会邻接表,赶紧去学。。 1 #include 2 #include 3 #include 4 #include 5 #include ...
阅读全文
摘要:算是LCA裸题吧,d[x]记录从根节点到x节点的距离然后求出x,y的LCA z 结果就是d[x]+d[y]-2*d[z] 我是用Tarjan写的,麻烦的地方就是怎么离线ans 刚开是学LCA,cheerup!! 1 #include 2 #include 3 #...
阅读全文
摘要:题目大意:给出一棵树和树上的一些路径求些路径有多少对是相交的 想一下就可以发现,每两条相交路径的交点中肯定有一个点是其中一条路径的两个端点的LCA 然后求出 1、每个点有多少条路径经过 2、每个点是几条路径的LCA 最后算一下就有ans,具体算法就不赘述 1、用树上前缀和计算 { ...
阅读全文