Submission #1203242

#TimeUsernameProblemLanguageResultExecution timeMemory
1203242AlgorithmWarriorSeptember (APIO24_september)C++20
100 / 100
101 ms12480 KiB
#include <bits/stdc++.h> using namespace std; int const MAX=1e5+5; vector<int>fii[MAX]; void build_arbore(int n,vector<int>&tata){ int i; for(i=1;i<n;++i){ int t=tata[i]; fii[t].push_back(i); } } void clear_arbore(int n){ int i; for(i=0;i<n;++i){ fii[i].clear(); } } bool viz[MAX]; void clear_viz(int n){ int i; for(i=0;i<n;++i){ viz[i]=0; } } int mxm(int a,int b){ return (a>b)?a:b; } int maxim; int poz[7][MAX]; void get_poz(int m,int n,vector<vector<int>>&date){ int i,j; for(i=0;i<m;++i){ for(j=0;j<n-1;++j){ poz[i][date[i][j]]=j; } } } void visit(int nod,int m){ for(auto fiu : fii[nod]){ if(!viz[fiu]){ visit(fiu,m); } } viz[nod]=1; int i; for(i=0;i<m;++i){ maxim=mxm(maxim,poz[i][nod]); } } int solve(int N, int M, vector<int> F,vector<vector<int>> S){ build_arbore(N,F); get_poz(M,N,S); maxim=0; int i,j; int cnt=0; for(j=0;j<N-1;++j){ for(i=0;i<M;++i){ if(!viz[S[i][j]]) visit(S[i][j],M); } if(j==maxim){ ++cnt; } } clear_viz(N); clear_arbore(N); return cnt; }
#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...