4.8 美团第五题

import java.util.*;
import java.lang.Math.*;
public class Main {   
  static  int res;   
  static  int[] dp = new int[1005]; 
  static int[] r = new int[1005];
  static int[] gr = new int[1005]; 
  static int[] b = new int[1005];   
  static int R ;   
  static int G ;   
  static int B ;  
  static ArrayList<Integer>[] g = new ArrayList[1005];
  public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);   
	int n = sc.nextInt(); 
	for (int i = 1; i <= n; i++) {       
	  g[i] = new ArrayList<>(); 
	}      
	for (int i = 1; i < n; i++) {  
	  int x = sc.nextInt();     
	  g[x].add(i+1);   
	  g[i+1].add(x);     
	}     
	String c = sc.next();  
	for (int i = 0; i < c.length(); i++) {    
	  if(c.charAt(i) == 'G')           
		G++;          
	  if(c.charAt(i) == 'R')  
		R++;     
	  if(c.charAt(i) == 'B')    
		B++;       
	}       
	dfs(1,-1,c);    
	dfs2(1,-1);   
	System.out.println(res);
  }   
  public static void dfs(int cur, int prev,String c) { 
	if(c.charAt(cur-1) == 'G') gr[cur]++;
	if(c.charAt(cur-1) == 'R') r[cur]++;   
	if(c.charAt(cur-1) == 'B') b[cur]++;
	for(int v: g[cur]) {      
	  if(v == prev) {     
		continue;            
	  }            
	  dfs(v,cur,c);       
	  gr[cur] += gr[v];      
	  r[cur] += r[v];          
	  b[cur] += b[v];       
	}   
  }    
  public static void dfs2(int cur, int prev) {  
	if(R - r[cur] > 0 && G - gr[cur] > 0 && B - b[cur] > 0 && r[cur] > 0 && gr[cur] > 0 && b[cur] > 0)  {  
	  res++;     
	}        
	for(int v: g[cur]) {   
	  if(v == prev) {    
		continue;        
	  }           
	  dfs2(v,cur);
	}    
  }
}
题目描述:
有一棵 n 个节点的树,树上每个点都有红绿蓝三种颜色中的一种。定义一棵树是多彩的,当且仅当这棵树同时存在一个红色节点,一个蓝色节点和一个绿色节点。

保证最初这棵树是多彩的,现在要砍掉这棵树的某一条边,请问有多少种砍法,使得砍完之后形成的两棵树都是多彩的。



输入描述
第一行一个整数 n,表示节点个数。

第二行 n-1 个整数 p2, p3, ..., pn,pi 表示树上 i 和 pi 两点之间有一条边。保证给出的一定是一棵树。

第三行一个长度为 n 的字符串,第 i 个字符表示第 i 个节点的初始颜色。其中 R 表示红色,G 表示绿色,B 表示蓝色。保证字符串只由这三种大写字母构成。

对于全部数据,3≤n≤1e5。

输出描述
输出一行,一个正整数,表示答案。


样例输入
7
1 2 3 1 5 5
GBGRRBB
样例输出
1
*/
全部评论
楼主投的什么岗位?
点赞 回复 分享
发布于 2023-04-14 00:00 四川
美团笔试一共多少题?
点赞 回复 分享
发布于 2023-04-17 00:00 山西

相关推荐

小狗吃臭臭:以后用不到你设计的手机了,可惜!
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-14 11:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务