没有上司的舞会
作者:互联网
package Week4; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; /*题目描述 某大学有 n 个职员,编号为 1…n。 他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。 现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 ri ,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。 所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。 输入格式 输入的第一行是一个整数 n。 第 2 到第 (n+1) 行,每行一个整数,第 (i+1) 行的整数表示 i 号职员的快乐指数ri。 第(n+2) 到第 2n 行,每行输入一对整数 l, k,代表 k 是 l 的直接上司。 输出格式 输出一行一个整数代表最大的快乐指数。*/ //dp[x][0]+=max(dp[son][1],dp[son][0]); // 如果x不去,则快乐值为+儿子去或者不去的最大值 //dp[x][1]+=dp[son][0]; // 如果x去,则快乐值为+儿子不去的最大值 public class P1352 { static int N; static int dp[][]; static int arr[][]; static int happy[]; static List<Integer> list[]; static int inDegree[]; public static void main(String[] args) throws Exception { System.setIn(new FileInputStream("Solution.txt")); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); dp = new int[N+1][2]; happy = new int[N+1]; list = new List[N+1]; inDegree = new int[N+1]; for (int i = 1; i <= N; i++) { happy[i]=Integer.parseInt(br.readLine()); list[i]=new ArrayList<Integer>(); } for (int i = 1; i <= N-1; i++) { st = new StringTokenizer(br.readLine()); int s = Integer.valueOf(st.nextToken()); int e = Integer.valueOf(st.nextToken()); list[e].add(s); inDegree[s]++; } int root=0; for (int i = 1; i <= N; i++) { if(inDegree[i]==0) {//找到跟节点,即入度为0的点就是跟节点 root=i; break; } } dfs(root); System.out.println(Math.max(dp[root][0], dp[root][1])); } private static void dfs(int curr) { for (int i = 0; i < list[curr].size(); i++) { int son = list[curr].get(i);//当前点找儿子节点,一直找一直找到底 dfs(son); dp[curr][1]+=dp[son][0];// 如果x去,则快乐值为+儿子不去的最大值 dp[curr][0]+=Math.max(dp[son][0], dp[son][1]);// 如果x不去,则快乐值为+儿子去或者不去的最大值 } dp[curr][1]+=happy[curr];//回溯时负值当前节点去的时候开心值 } }View Code
标签:舞会,上司,java,没有,int,static,import,new,dp 来源: https://www.cnblogs.com/humiqi/p/15103677.html