hdu 2412 Party at Hali-Bula 树形dp

#include
#include
#include
#include
#include
#include
using namespace std;
mapma;
map::iterator na;
const int N =210;
char str1[N],str2[N];
int cnt;
int dp[N][2];
bool uniq[N][2];
int find(string str){
	na=ma.find(str);
	if(na==ma.end()){
		ma[str]=cnt++;
		return ma[str];
	}
	else {
		return ma[str];
	}
}
vectorg[N];
void dfs(int root){
	if(g[root].size()==0){
		dp[root][0]=0;
		dp[root][1]=1;
		return;
	}
	for(int i=0;idp[u][1]){
			uniq[root][0]=uniq[u][0];//1
		}
		else {
			uniq[root][0]=uniq[u][1];//2
		}
		}
		if(uniq[u][0]==false)
		uniq[root][1]=false;
	}
	dp[root][1]++;
}
int main(){
	int n;
	while(scanf("%d",&n)!=EOF&&n){
		scanf("%s",str1);
		ma.clear();
		for(int i=0;i<=n;i++){
			g[i].clear();
		}
		ma[str1]=0;
		cnt=1;
		for(int i=1;idp[0][1]){
			if(uniq[0][0]==true) printf("%d Yes\n",dp[0][0]); 
			else printf("%d No\n",dp[0][0]); 
		}
		else {
			if(uniq[0][1]==true) printf("%d Yes\n",dp[0][1]); 
			else printf("%d No\n",dp[0][1]); 
		}
	}
	return 0;
}

你可能感兴趣的:(dp)