cf219d】的更多相关文章

D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output The country Treeland consists of n cities, some pairs of them are connected with unidirectional roads. Over…
树形dp #include <cstdio> #include <vector> using namespace std; #define D(x) const int INF = 0x3f3f3f3f; ; int n; vector<pair<int, int> > edge[MAX_N]; int re_num[MAX_N]; vector<int> ans_vec; int dfs(int father, int u, int add,…
/*树形dp换根法*/ #include<bits/stdc++.h> using namespace std; #define maxn 200005 ]; int root,n,s,t,head[maxn],tot,dp[maxn]; void init(){ memset(head,-,sizeof head); tot=; } void addedge(int u,int v,int flag){ edge[tot].to=v;edge[tot].nxt=head[u];edge[to…
嘟嘟嘟 树形dp. 首先一个很常规的想法就是如果u到v有一条边,那么建立cost(u, v) = 0, cost(v, u) = 1的两条边. 可以两遍dfs. 先任选一个点作为根节点,第一遍从下往上dfs,维护节点u到他的所有子节点的距离,很容易得出dis[u] = ∑dis[v] + cost(u, v) (v为u的儿子节点). 第二遍从上往下dfs,维护节点u到所有节点的距离,考虑u和他的一个儿子节点v,两者到所有节点的区别只有cost(u, v)这条边是不一样的,如果cost(u, v)…