题意:求一个 nn 个点的树中树的直径。

树的直径模板题。


性质

1.直径两端点一定是叶子节点。

2.距任意点最远点一定是直径的端点,据所有点最大值最小的点一定是直径的中点。

3.两棵树相连,新直径的两端点一定是原四个端点中的两个。

4.两棵树相连,设 ll 为树的直径长度,qq 为树的半径长度,ww 为两棵树相连的边的长度,kk 为直径中最接近中点的节点,新直径长度最小为 max(max(l1,l2),q1+q2+w) (q=max(tot−d[k],d[k]))max(max(l _1,l _2),q _1+q _2+w)\ (q=max(tot-d[k],d[k]))。

题意:

Dark 是一张无向图,图中有 NN 个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark 有 N−1N-1 条主要边,并且 Dark 的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark 还有 MM 条附加边。

你的任务是把 Dark 斩为不连通的两部分。一开始 Dark 的附加边都处于无敌状态,你只能选择一条主要边切断。一旦你切断了一条主要边,Dark 就会进入防御模式,主要边会变为无敌的而附加边可以被切断。但是你的能力只能再切断 Dark 的一条附加边。

题意:

一张 TT 条边的无向图,点的编号为从 1∼10001\sim 1000,求从起点 SS 到终点 EE 恰好经过 NN 条边(可以重复)的最短路。

虽然点为从 1∼10001\sim 1000,但是边只有 100100 条,所以可以先离散化点的编号为 1∼P1\sim P。

离散化后,用邻接矩阵 AA 存储边,所以 A[i,j]A[i,j] 代表从 ii 到 jj 只经过一条边时的最短路。

题意:给定一张无向图,求图中一个至少包含 33 个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。你需要输出最小环的方案,若最小环不唯一,输出任意一个均可。

考虑 Floyd 算法,d[i,j]d[i,j] 表示经过编号不超过 k−1k-1 的节点,从 ii 到 jj 的最短路。

题意: 一个 NN 个点的树,树上任意两个节点的距离都是 11 ,一开始从 11 号节点出发,经过所有边后回到 11 号节点,你可以新建 KK 条边 (1≤K≤2)(1\leq K\leq 2),使得总的访问路径的长度最小,且满足新建的边正好只经过一次,输出这个最小的长度。

很明显,树上 NN 个点,那么就有 N−1N-1 条边,要想每个节点都访问完,根据搜索可知,总长度应为 2(n−1)2(n-1),每条边访问一次,回溯一次。

题意:在顺利攻破Lord lsp的防线之后,lqr一行人来到了Lord lsp的城堡下方。Lord lsp黑化之后虽然拥有了强大的超能力,能够用意念力制造建筑物,但是智商水平却没怎么增加。现在lqr已经搞清楚黑暗城堡有 NN 个房间, MM 条可以制造的双向通道,以及每条通道的长度。lqr深知Lord lsp的想法,为了避免每次都要琢磨两个房间之间的最短路径,Lord lsp一定会把城堡修建成树形的。但是,为了尽量提高自己的移动效率,Lord lsp一定会使得城堡满足下面的条件:设 D[i]D[i] 为如果所有的通道都被修建,第 ii 号房间与第 11 号房间的最短路径长度;而 S[i]S[i] 为实际修建的树形城堡第 ii 号房间与第 11 号房间的路径长度;要求对于所有整数 ii,有 S[i]=D[i]S[i]=D[i] 成立。为了打败Lord lsp,lqr想知道有多少种不同的城堡修建方案。你需要输出答案对 231−12^{31}-1 取模之后的结果。

题意:给定 nn 个变量,mm 个不等式。不等式之间具有传递性,即若 A>BA>B 且 B>CB>C ,则 A>CA>C。判断这 mm 个不等式是否有矛盾。若存在矛盾,则求出 tt 的最小值,满足仅用前 tt 个不等式就能确定不等式之间存在矛盾。若无矛盾,则判断这 mm 个不等式是否能确定每一对变量之间的关系。若能,则求出 tt 的最小值,满足仅用前 tt 个不等式就能确定每一对变量之间的大小关系。

题意:大卫大帝刚刚建立了一个沙漠帝国,为了赢得他的人民的尊重,他决定在全国各地建立渠道,为每个村庄提供水源。与首都相连的村庄将得到水资源的浇灌。他希望构建的渠道可以实现单位长度的平均成本降至最低。换句话说,渠道的总成本和总长度的比值能够达到最小。他只希望建立必要的渠道,为所有的村庄提供水资源,这意味着每个村庄都有且仅有一条路径连接至首都。他的工程师对所有村庄的地理位置和高度都做了调查,发现所有渠道必须直接在两个村庄之间水平建造。由于任意两个村庄的高度均不同,所以每个渠道都需要安装一个垂直的升降机,从而使得水能够上升或下降。建设渠道的成本只跟升降机的高度有关,换句话说只和渠道连接的两个村庄的高度差有关。需注意,所有村庄(包括首都)的高度都不同,不同渠道之间不能共享升降机。

题意:一个 TT 个点的图,有 RR 条双向边,PP 条单向边,单向边权可能为负,但保证途中不存在负环,求起点 SS 到各点的最短路。

很明显,带负权边,不能用 DijkstraDijkstra,又因为数据的特殊构造,SPFASPFA 也死了。

仔细看题目,发现“双向边都为非负的”,只有单向边可能为负权,且单向边不会构成环,那么就好办了。

题意:一个 NN 个点 MM 条边的无向图,求无向图的最小生成树,且满足 11 号节点的度数不超过给定整数 SS。

经典的最小度限制生成树问题,可以参考这位大佬的博客。

首先去掉 11 号节点,则图会分成几个连通块,把每个连通块的最小生成树求出来,累计答案;

然后在每个连通块中选出一个节点 pp ,使得无向边 (1,p)(1,p) 的权值尽量小;