Party planning problem Recently, I came across this problem in my textbook. Any hints on how to solve this using dynamic programming?
"Professor Stewart is consulting for the president of a corporation that is planning a company party. The company has a hierarchical structure; that is, the supervisor relation forms a tree rooted at the president. The personnel office has ranked each employee with a conviviality rating, which is a real number. In order to make the party fun for all attendees, the president does not want both an employee and his or her immediate supervisor to attend. Professor Stewart is given the tree that describes the structure of the corporation, using the left-child, right-sibling representation. Each node of the tree holds, in addition to the pointers, the name of an employee and that employee’s conviviality ranking. Describe an algorithm to make up a guest list that maximizes the sum of the conviviality ratings of the guests."

I'll give you a hint without referring to the representation of the graph:
Given a tree structure of a corporation, you can either have the root (president) attend the party or not. Say the root has n children. If the root is not in the party, you can have a party which is the "sum" of n different parties, each representing the subtree at each of the n children (this is the recursive step). If the root is in the party, then you again have the sum of n different parties, but this time each "subparty" cannot have its root included (this is another recursive step).
You can reformat this recursion into a dynamic programming solution, or solve it recursively with memoization.
