题意:给一个树形图(有向树),n个节点,n-1条有向边,要求选一个节点作为根,使需要改变方向的边的数目最少。并输出所有可能作为根的点。 设dp[i]表示以i为根,需要改变多少个边方向 题解:首先dfs从下向上dp[i],然后在dfs一次从上更新dp[i] #include <bits/stdc++.h> using namespace std; const int maxn = 1e6 + 5; int head[maxn], tot, dp[maxn]; const int inf = 1e9; int mm = inf; struct Edge { int u, v, opt,...