poj 1949 Chores
2012-04-12 14:26
316 查看
题目链接:http://poj.org/problem?id=1949
题目思路:简单树形dp。
题目思路:简单树形dp。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<string> #include<queue> #include<algorithm> #include<vector> #include<stack> #include<list> #include<iostream> #include<map> using namespace std; #define inf 0x3f3f3f3f #define Max 110 inline int max(int a,int b) { return a>b?a:b; } int min(int a,int b) { return a<b?a:b; } int p[11000],val[10010],eid; int dp[10010]; struct node { int to,next; }e[1000100]; inline void addedge(int u,int v) { e[eid].to=v; e[eid].next=p[u]; p[u]=eid++; } void inline dfs(int u) { if(dp[u]!=-1) return; int i; dp[u]=val[u]; for(i=p[u];i!=-1;i=e[i].next) { dfs(e[i].to); dp[u]=max(dp[u],dp[e[i].to]+val[u]); } } int main() { int i,j,u,num,n; while(scanf("%d",&n)!=EOF) { eid=0; for(i=0;i<=n;i++) p[i]=-1,dp[i]=-1; for(i=1;i<=n;i++) { scanf("%d%d",&val[i],&num); for(j=1;j<=num;j++) { scanf("%d",&u); addedge(u,i); } } int ans=0; for(i=1;i<=n;i++) { if(dp[i]==-1) { dfs(i); } ans=max(ans,dp[i]); } printf("%d\n",ans); } return 0; }
相关文章推荐
- POJ 1949 Chores (DP+拓扑)
- POJ 1949 Chores
- poj 1949 Chores
- poj 1949 Chores(基础题)
- poj 1949 Chores 最长路
- poj 1949——Chores
- 【poj 1949】Chores
- POJ 1949 Chores(DP)
- POJ 1949 Chores
- POJ 1949 Chores(树状DP)
- POJ 1949 Chores(树形dp)
- [poj 1949]Chores 题解 [dp]
- POJ 1949 Chores
- POJ 1949 Chores 动态规划
- POJ 1949 Chores 拓扑排序
- poj 1949 Chores
- POJ 1949 Chores
- poj 1949 Chores
- POJ 1949 Chores
- (POJ DP1.1)POJ 1949 Chores(简单DP)