Submission #746185

#TimeUsernameProblemLanguageResultExecution timeMemory
746185rahulvermaNetwork (BOI15_net)Java
100 / 100
1814 ms158776 KiB
import java.io.*; import java.util.*; public class net { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); ArrayList<ArrayList<Integer>> graph = new ArrayList<>(); for(int i = 0; i < n; i++) graph.add(new ArrayList<Integer>()); for(int i = 1; i < n; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int v1 = Integer.parseInt(st.nextToken()) - 1; int v2 =Integer.parseInt(st.nextToken()) - 1; graph.get(v1).add(v2); graph.get(v2).add(v1); } int root = 0; for(int i = 0; i < n; i++) { if(graph.get(i).size() != 1) { root = i; } } int[] dist = new int[n]; Queue<Integer> q = new LinkedList<Integer>(); Arrays.fill(dist, -1); q.add(root); dist[root] = 0; ArrayList<Integer> ans = new ArrayList<Integer>(); while(!q.isEmpty()) { int node = q.poll(); for(int node2: graph.get(node)) { if(dist[node2] == -1) { dist[node2] = dist[node] + 1; q.add(node2); if(graph.get(node2).size() == 1) { ans.add(node2 + 1); } } } } PrintWriter pw = new PrintWriter(System.out); pw.println((ans.size() + 1) / 2); for(int i = 0; i < ans.size() / 2; i++) { pw.println(ans.get(i) + " " + ans.get(i + ans.size() / 2)); } if(ans.size() % 2 == 1) { pw.println(ans.get(ans.size() - 1) + " " + ans.get(0)); } pw.close(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...