제출 #1201230

#제출 시각아이디문제언어결과실행 시간메모리
1201230meligy1229월 (APIO24_september)C++20
100 / 100
126 ms13760 KiB
#include<bits/stdc++.h> #include "september.h" using namespace std; #define ll long long #define Meligy ios_base::sync_with_stdio(false); cin.tie(NULL); const int Nx=2e5 + 5; vector<ll>adj[Nx]; bool vis[Nx]; set<int>st; void bfs(int s){ queue<int>q; vis[s]=1; q.push(s); while(!q.empty()) { int cur=q.front(); q.pop(); for(auto &v:adj[cur]){ if(vis[v])continue; st.insert(v); vis[v]=1; q.push(v); } } } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S){ for(int i=1;i<N;i++){ adj[F[i]].push_back(i); } int ans=0; ll c[N+1]; memset(c,0,sizeof(c)); int l=0; for(int i=0;i<N-1;i++){ for(int m=0;m<M;m++){ c[S[m][i]]++; } bool f=1; for(int j=l;j<=i;j++){ for(int m=0;m<M;m++){ if(c[S[m][j]]<M)f=0; } if(f==0)break; } if(f==0)continue; for(int j=l;j<=i;j++){ if(!vis[S[0][j]]){ bfs(S[0][j]); } else{ st.erase(st.find(S[0][j])); } } if(st.empty())ans++; l=i+1; } for(int i=0;i<N;i++) { adj[i].clear(); vis[i]=0; } st.clear(); 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...