Submission #1017725

#TimeUsernameProblemLanguageResultExecution timeMemory
1017725MohamedFaresNebiliSeptember (APIO24_september)C++17
0 / 100
1 ms3420 KiB
    #include <bits/stdc++.h>
     
    		using namespace std;
     
    		vector<int> adj[100005];
    		int act[100005], rem[100005];
    		bool leaf[100005];
     
    		int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
    			for(int l = 0; l < N; l++) 
    				adj[l].clear(), act[l] = rem[l] = leaf[l] = 0;
    			for(int l = 1; l < N; l++) 
    				adj[F[l]].push_back(l);
    			for(int l = 0; l < N; l++) {
    				if(adj[l].size() > 0) act[l] = (int)adj[l].size();
    				else leaf[l] = 1;
    			}
     
    			int res = 0, cur = 0;
    			for(int l = 0; l < N - 1; l++) {
    				int U = S[0][l]; 
    				if(leaf[U]) {
    					while(F[U] != 0) {
    						act[F[U]]--;
    						if(act[F[U]] == 0) {
    							leaf[F[U]] = 1;
    							if(rem[F[U]]) {
    								cur--; U = F[U];
    							}
    						}
    						break;
    					}
    					
    					if(cur == 0) ++res;
    				}
    				else rem[U] = 1, cur++;
    			}
     
    			return res;
    		}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...