codeforces Round #263(div2) D. Appleman and Tree 树形dp
2015-08-23 18:15
489 查看
//зїеп:1085422276 #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <queue> #include <typeinfo> #include <map> #include <stack> typedef long long ll; #define inf 100000000 #define mod 1000000007 using namespace std; inline ll read() { ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } //*************************************** struct ss { int to,next; }e[200005*5]; ll dp[200005][2]; int head[200005],t,vis[200005],cl[200005]; void init(){ memset(head,0,sizeof(head)); t=1; } void add(int u,int v) { e[t].next=head[u]; e[t].to=v; head[u]=t++; } void dfs(int x,int pre) { //vis[x]=1; dp[x][cl[x]]=1; for(int i=head[x];i;i=e[i].next) { if(e[i].to==pre)continue; dfs(e[i].to,x); if(cl[x]==1){ dp[x][1]=(dp[x][1]*dp[e[i].to][0]%mod+dp[x][1]*dp[e[i].to][1])%mod; } else { dp[x][1]=(dp[x][1]*dp[e[i].to][0]%mod+dp[x][0]*dp[e[i].to][1]%mod+dp[x][1]*dp[e[i].to][1])%mod; dp[x][0]=(dp[x][0]*dp[e[i].to][1]%mod+dp[x][0]*dp[e[i].to][0])%mod; } } } int main() { init(); int n; scanf("%d",&n); int x; for(int i=0;i<n-1;i++){ scanf("%d",&x); add(i+1,x); add(x,i+1); } for(int i=0;i<n;i++) scanf("%d",&cl[i]); dfs(0,-1); cout<<dp[0][1]<<endl; return 0; }
代码
相关文章推荐
- Android binder 原理及实现机制<一>
- Android-基本控件(Spanner 下拉列表)
- android 组件EditText实例
- Object -C 数组 -- 笔记
- 直接拿来用!最火的Android开源项目(完结篇)
- iOS-项目的目录结构能看出你的开发经验
- 直接拿来用!最火的Android开源项目(二)
- android studio的annotation编译环境配置,适合小白
- 直接拿来用!最火的Android开源项目(一)
- android 组件Gallery实例
- Android尽量避免使用开发jpg图片
- Android基础入门教程——4.5.1 Intent的基本使用
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Handler类,有两个包,一个是java的,用于日志和消息,一个android,专用于消息.
- Android Studio新建项目
- iOS 宏(define)与常量(const)的正确使用
- Android - Hierarchical Parent 必须填写的解决办法
- android textview 字体不同颜色
- Unity3D实现DoubleClick的一种方法
- Android-GridView (Simpleadapter)