제출 #1162264

#제출 시각아이디문제언어결과실행 시간메모리
1162264Almonther9월 (APIO24_september)C++17
0 / 100
1 ms2884 KiB
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define co cout<<
// stuff
const int maxn=1e5+5;
vector<ll>v[maxn];
ll par[maxn],vis[maxn];
void dfs(ll x){
    for(auto i:v[x]){
        if(i==par[x]) continue;
        par[i]=x;
        dfs(i);
    }
}
int solve(int N,int M,vector<int>F,vector<vector<int>>S){
    ll cnt=0,ans=0,apear[N+5]={};
    set<ll>s;
    for(int i=0;i<N-1;i++) v[F[i]].push_back(i+1);
    dfs(0);
    for(int j=0;j<N-1;j++){
        for(int i=0;i<M;i++){
            apear[S[i][j]]++;
            if(apear[S[i][j]]==1) cnt++;
            if(apear[S[i][j]]==M) cnt--;
            if(j==0){
                s.erase(S[i][j]);
                for(auto k:v[S[i][j]]){
                    if(k==par[S[i][j]]) continue;
                    if(vis[k]==0) s.insert(k);
                }
                vis[S[i][j]]=1;
            }
        }
        if(cnt==0&&s.size()==0) ans++;
    }
    for(int i=0;i<N;i++){
        v[i].clear();
        vis[i]=0;
    }
    return ans;
}
#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...