#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; ; ]; long long w[maxn]; struct node { long long to,next,value; }way[maxn]; long long tmp; long long tot; long lo…
没考虑可以连着两个不选--直接染色了 实际上是基环森林,对于每棵基环树,dfs找出一个环边,然后断掉这条边,分别对这条边的两端点做一边treedp,取max加进答案里 treedp是设f[u]为选u点,g[u]为不选u点,然后随便转移一下就行了 #include<iostream> #include<cstdio> using namespace std; const int N=1000005; int n,h[N],cnt=1,x,y,eg; long long a[N],f[…
P2607 [ZJOI2008]骑士 本题本质上就是树dp,和没有上司的舞会差不多,只不过多了一个对基环树的处理. #include<iostream> #include<cstring> #include<string> #include<cstdio> #define ll long long using namespace std; const int maxn=2e6; int n,cnt; ll val[maxn]; int root; int h…