根据二分图的性质,我们知道如果树的根是红色的,那么它的子节点必须是黑色的,如果根是黑色的,那么它的子节点必须是红色的。 所以我们可以用dfs来遍历树去计算红色节点的个数,然后用总节点数减去红色节点的个数就是黑色节点的个数,然后用红色节点的个数乘以黑色节点的个数减去边的个数就是可以加的边的个数。
n = int(input())
# 初始化邻接表
给你一个序列 n,包含 n 个节点和 n−1 条边,你可以在树中选两个节点进行连无向边,要求连边后的无向图是二分图,问你能连接的最多的边数。
第一行一个整数 n(2≤n≤105),表示节点数。 接下来 n−1 行,每行两个整数 u 和 v (1≤u,v≤n),表示树中的一条边。
输出一个整数,表示能增加的最多的边数。
输入:
4
1 2
2 3
3 4
输出:
2