We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
importjava.io.*;importjava.util.*;publicclassSolution{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));intN=Integer.parseInt(br.readLine());//Get vertex values and tree sumVertex[]verts=newVertex[N];N=0;intsum=0;for(Strings:br.readLine().split(" ")){shortv=Short.parseShort(s);sum+=v;verts[N++]=newVertex(v);}//Get edgeswhile(--N>0){String[]temp=br.readLine().split(" ");inti1=Integer.parseInt(temp[0])-1;inti2=Integer.parseInt(temp[1])-1;verts[i1].addEdge(verts[i2],sum);verts[i2].addEdge(verts[i1],sum);}//InitializeVertex.init(verts[0]);//Find smallest diffintmin=Integer.MAX_VALUE;for(Vertexvertex:verts){intcurMin=vertex.minDiff(sum);//Update minmin=(curMin<min)?curMin:min;}//OutputSystem.out.print(min);}privatestaticclassVertex{privateintminDiff;privateshortvalue;privatebooleanisInit;privateList<Edge>edges;publicVertex(shortvalue){this.value=value;this.isInit=false;this.edges=newArrayList<Edge>();}publicvoidaddEdge(Vertexvertex,intvalue){edges.add(newEdge(vertex,value));}publicintminDiff(intsum){intmin=sum;for(Edgeedge:edges){//Get difference of both possible treesintcurMin=sum-2*edge.value;//Make absolute valuecurMin=(curMin<0)?-curMin:curMin;//Update minmin=(curMin<min)?curMin:min;}returnmin;}publicstaticvoidinit(Vertexv){if(!v.isInit){v.init();}}privateintinit(){this.isInit=true;Edgecaller=null;intsum=this.value;//For each edgefor(Edgeedge:edges){//If it's the caller, save for laterif(edge.vertex.isInit){caller=edge;//Otherwise, get the sum of//all vertices for that edge}else{sum+=edge.value=edge.vertex.init();}}//If it's the caller//subtract this vertex's//sum from the tree's sumif(caller!=null){caller.value-=sum;}returnsum;}privateclassEdge{publicintvalue;publicVertexvertex;publicEdge(Vertexvertex,intvalue){this.value=value;this.vertex=vertex;}}}}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Cut the Tree
You are viewing a single comment's thread. Return to all comments →