update
This commit is contained in:
		
							parent
							
								
									dd20cc9fd8
								
							
						
					
					
						commit
						2d3a3ce03b
					
				
							
								
								
									
										38
									
								
								src/P5658/P5658.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/P5658/P5658.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <stack>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
using ll = long long;
 | 
			
		||||
 | 
			
		||||
const ll max_n = 5e5;
 | 
			
		||||
ll n, father;
 | 
			
		||||
std::string s;
 | 
			
		||||
std::vector<ll> son[max_n];
 | 
			
		||||
char c[max_n];
 | 
			
		||||
 | 
			
		||||
void dfs(const ll now, const std::stack<char> &parenthesis){
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    for(const auto i:son[now]){
 | 
			
		||||
        auto new_parenthesis = parenthesis;
 | 
			
		||||
        new_parenthesis.push(c[i]);
 | 
			
		||||
        dfs(i, new_parenthesis);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(){
 | 
			
		||||
    std::cin>>n;
 | 
			
		||||
    std::cin>>s;
 | 
			
		||||
    for(ll i{1};i<=n;i++){
 | 
			
		||||
        c[i]=s[i-1];
 | 
			
		||||
    }
 | 
			
		||||
    for(ll i{2};i<=n;i++){
 | 
			
		||||
        std::cin>>father;
 | 
			
		||||
        son[father].push_back(i);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::stack<char> first_parenthesis;
 | 
			
		||||
    first_parenthesis.push(c[1]);
 | 
			
		||||
    dfs(1, first_parenthesis);
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user