4.23 小红书
02
不知道这个正确否
package alibaba; import java.util.*; public class Main { static int n; static int[] vistited = new int[100005]; static int[] red = new int[100005]; static int num; static List<List<Integer>> allroad = new ArrayList<>(100005); static void dfs(int point){ for(int i=0;i < allroad.get(point).size();i++){ int temp = allroad.get(point).get(i); if(vistited[temp] == 0){ vistited[temp] = 1; num++; dfs(temp); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); String s = sc.next(); //System.out.println(s); List<Integer> ltk = new ArrayList<>(); for(int i=0;i < s.length();i++){ if(s.charAt(i) == 'R') { red[i + 1] = 1; } } for (int i = 0; i <= n; i++) { allroad.add(new ArrayList<Integer>()); } for(int i=0;i < n-1;i++){ int a = sc.nextInt(); int b = sc.nextInt(); if(red[a] == 1 && red[b] == 1){ allroad.get(a).add(b); allroad.get(b).add(a); } } for(int i=0;i <= n;i++){ if(red[i] == 1 && vistited[i] == 0){ num = 1; vistited[i] = 1; dfs(i); ltk.add(num); } } Comparator<Integer> ltkCompator = (o1,o2) -> (int) o1 - (int) 02; Collections.sort(ltk,ltkCompator.reversed()); if(ltk.size() < k){ System.out.println(-1); }else{ System.out.println(ltk.get(k -1)); } } }