ural 1039 Anniversary Party

    技术2024-11-11  23

    刚开始想用矩阵模拟邻接链表的, MLE,  就改成暴力DP了.

    #include<iostream> #define max(a,b) a>b?a:b using namespace std; int n; int T[6001][2]; int f[6001]; int up[6001]; void find(int p); int main() { int i,j,k; memset(up,false,sizeof(up)); scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&f[i]); while(scanf("%d%d",&j,&k)&&j&&k) up[j]=k; for(i=1;i<=n;i++) if(!up[i]) break; find(i); printf("%d/n",max(T[i][0],T[i][1])); return 0; } void find(int p) { int i,j,k; T[p][1]=f[p]; for(i=1;i<=n;i++) { if(up[i]==p) { find(i); T[p][0]+=max(T[i][0],T[i][1]); T[p][1]+=T[i][0]; } } return; }

    最新回复(0)