Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
神啊!!!!谁能告诉我为什么会Runtime Errorimport java.util.*; public class Main { static int n; static ArrayList<Integer>[] edge; static int[] maxSon,sonNum; static void readIn() { Scanner cin = new Scanner(System.in); n = cin.nextInt(); edge = new ArrayList[n+1]; for (int i = 1; i <= n; i++) edge[i] = new ArrayList<Integer>(); for (int i = 0; i < n-1; i++) { int u,v; u = cin.nextInt(); v = cin.nextInt(); edge[u].add(v); edge[v].add(u); } } static void makeTree(int p, int f) { for (int i = 0; i < edge[p].size(); i++) { int v = edge[p].get(i); if (v != f) { makeTree(v, p); sonNum[p] += sonNum[v]; if (maxSon[p] < sonNum[v]) maxSon[p] = sonNum[v]; } sonNum[p]++; } } public static void main(String[] args) { readIn(); maxSon = new int[n+1]; sonNum = new int[n+1]; makeTree(1, 0); ArrayList<Integer> ans = new ArrayList<Integer>(); int maxComp = n; for (int i = 1; i <= n; i++) { if (maxComp > Math.max(sonNum[1]-sonNum[i], maxSon[i])) { maxComp = Math.max(sonNum[1]-sonNum[i], maxSon[i]); ans.clear(); ans.add(i); }else if (maxComp == Math.max(sonNum[1]-sonNum[i], maxSon[i])) ans.add(i); } for (int i = 0; i < ans.size(); i++) System.out.print(ans.get(i)+" "); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator