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));
}
}
}

查看9道真题和解析