摘要:
Floyd算法深刻理解 最开始只允许经过1号顶点进行中转,接下来只允许经过1和2号顶点进行中转……允许经过1~n号所有顶点进行中转,求任意两点之间的最短路程。用一句话概括就是:从i号顶点到j号顶点只经过前k号点的最短路程。 因为给的时间是不下降的序列,所以肯定要从第一个村庄开始修路,这样用时间来判断 阅读全文
摘要:
分成两部 求出树的重心 用$BFS$ 求出所有点到重心的距离 #include <bits/stdc++.h> using namespace std; const int N = 5e4 + 10; int e[N*2],ne[N*2],h[N],idx,rt,mds[N],ds[N],n,sum 阅读全文
摘要:
求重心的本质,其实就是枚举每一个节点的所有子树,使得该节点中的最大子树最小化。 #include <iostream> #include <cstring> using namespace std; const int N = 2e5 + 10; int e[N],h[N],ne[N],mds[N] 阅读全文