POJ 3342 树形DP入门题
来源:互联网 发布:mesh网络 编辑:程序博客网 时间:2024/06/06 00:22
题目意思和POJ2342一样,只是多加了一个条件,如果最大方案数唯一,输出Yes,不唯一输出No
dp的是时候多加一个变量记录答案是否唯一即可
#include "stdio.h"#include "string.h"#include "vector"using namespace std;struct node{ int fa; vector<int>child;}data[210];struct comp{ int x,y; // x记录最优值,y记录最优值是否唯一}dp[210][2];int vis[210];void dfs(int cur){ int i,next; vis[cur]=1; for (i=0;i<data[cur].child.size();i++) { next=data[cur].child[i]; if (vis[next]==0) dfs(next); dp[cur][1].x+=dp[next][0].x; if (dp[next][0].y==1) dp[cur][1].y=1; if (dp[next][0].x>dp[next][1].x) { dp[cur][0].x+=dp[next][0].x; if (dp[next][0].y==1) dp[cur][0].y=1; } else if (dp[next][0].x<dp[next][1].x) { dp[cur][0].x+=dp[next][1].x; if (dp[next][1].y==1) dp[cur][0].y=1; } else { dp[cur][0].x+=dp[next][1].x; dp[cur][0].y=1; } }}int main(){ int n,i,j,x,y,sum; char a[110],b[110],name[210][110]; while (scanf("%d",&n)!=EOF) { if (n==0) break; memset(vis,0,sizeof(vis)); memset(dp,0,sizeof(dp)); memset(data,0,sizeof(data)); scanf("%s",name[1]); sum=1; for (i=2;i<=n;i++) { scanf("%s%s",a,b); for (j=1;j<=sum;j++) if (strcmp(name[j],a)==0) break; x=j; if (j==sum+1) { sum++; strcpy(name[sum],a); } for (j=1;j<=sum;j++) if (strcmp(name[j],b)==0) break; y=j; if (j==sum+1) { sum++; strcpy(name[sum],b); } data[x].fa=y; data[y].child.push_back(x); } for (i=1;i<=sum;i++) dp[i][1].x=1; dfs(1); if (dp[1][1].x>dp[1][0].x) { printf("%d ",dp[1][1].x); if (dp[1][1].y==0) printf("Yes\n"); else printf("No\n"); } else if (dp[1][1].x<dp[1][0].x) { printf("%d ",dp[1][0].x); if (dp[1][0].y==0) printf("Yes\n"); else printf("No\n"); } else { printf("%d ",dp[1][0].x); printf("No\n"); } } return 0;}
1 0
- POJ 3342 树形DP入门题
- POJ 2342 树形DP入门题
- POJ 1947 树形DP入门题
- POJ 2342 树形DP入门水题
- poj 2342 树形dp入门
- poj 3342 树形DP
- poj 3342 树形DP
- POJ 1655 Balancing Act 树形DP入门题
- [ACM] POJ 2342 Anniversary party (树形DP入门题)
- POJ 2342 Anniversary party (树形dp 入门题)
- [ACM] POJ 2342 Anniversary party (树形DP入门题)
- HDU 1520 & POJ 2342 Anniversary party(树形DP入门题)
- 树形dp入门之poj 2342
- POJ - 1463Strategic game入门树形DP
- POJ 2342 (树形dp入门)
- poj 2342 Anniversary party 树形dp入门
- poj Anniversary party(树形dp入门)
- poj 2342 Anniversary party 树形dp入门
- 109_利用反射调用隐藏api获取应用程序的缓存大小
- rayban pas cher Shenzhen Branch
- 执行命令mm出错以及运行adb shell出现insufficient permissions for device错误的解决方法
- 经典问题—链表中的环问题
- Neutron特性介绍之一 - 虚拟网络组网基本需求
- POJ 3342 树形DP入门题
- javascript中数组Array的方法
- servlet&jsp 登陆,根据输入显示不同页面内容
- 3分钟入睡治疗术的作用
- poj 1961 Period
- ZOJ 2972(背包dp)
- HIVE RCFile高效存储结构
- 数据结构之链表实现增删改查
- 各种贴片封装尺寸图_百度文章