标签:one val += seve OWIN img appears set you
Input
Output
Sample Input
4 0:(1) 1 1:(2) 2 3 2:(0) 3:(0) 5 3:(3) 1 4 2 1:(1) 0 2:(0) 0:(0) 4:(0)
Sample Output
1 2
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 const int maxn = 1e5 + 10; 6 const int INF = 0x7fffffff; 7 int n, dp[maxn][2], head[maxn], tot; 8 struct node { 9 int v, next; 10 } edge[maxn]; 11 void init() { 12 tot = 0; 13 memset(head, -1, sizeof(head)); 14 } 15 void add(int u, int v) { 16 edge[tot].v = v; 17 edge[tot].next = head[u]; 18 head[u] = tot++; 19 edge[tot].v = u; 20 edge[tot].next = head[v]; 21 head[v] = tot++; 22 } 23 void solve(int x, int fa) { 24 dp[x][0] = 0; 25 dp[x][1] = 1; 26 for (int i = head[x] ; i != -1 ; i = edge[i].next) { 27 int v = edge[i].v; 28 if (v == fa) continue; 29 solve(v, x); 30 dp[x][1] += min(dp[v][0], dp[v][1]); 31 dp[x][0] += dp[v][1]; 32 } 33 } 34 int main() { 35 while(scanf("%d", &n) != EOF) { 36 init(); 37 int x, y, z; 38 for (int i = 0 ; i < n ; i++) { 39 scanf("%d:(%d)", &x, &y); 40 while(y--) { 41 scanf("%d", &z); 42 add(x, z); 43 } 44 } 45 solve(0, -1); 46 printf("%d\n", min(dp[0][0], dp[0][1])); 47 } 48 return 0; 49 }
HDU - 1054 Strategic Game 树形DP
标签:one val += seve OWIN img appears set you
原文地址:https://www.cnblogs.com/qldabiaoge/p/9345708.html