제출 #1201808

#제출 시각아이디문제언어결과실행 시간메모리
1201808noop9월 (APIO24_september)C++20
45 / 100
83 ms3184 KiB
#include <bits/stdc++.h>
using namespace std;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
  vector<int> g(N,0);
  vector<bool> s(N,0);
  vector<vector<int> > v(M,vector<int>(N));
  unordered_set<int> req;
  vector<int> e;
  int ans=0,t=0,c,p;
  bool flag;
  for (int i=1; i<N; i++){
    g[F[i]]++;
  }
  for (int i=0; i<S[0].size(); i++){
    c=S[0][i];
    if (g[c]){
      t++;
      s[c]=1;
    }
    p=F[c];
    g[p]--;
    if (!g[p] and s[p]){
      t--;
      s[p]=0;
    }
    for (int r=0; r<M; r++){
      v[r][S[r][i]]++;
      e.push_back(S[r][i]);
    }
    for (int i=0; i<e.size(); i++){
      flag=1;
      c=e[i];
      for (int r=1; r<M; r++){
        if (v[r][c]!=v[0][c]){
          flag=0;
          break;
        }
      }
      if (flag){
        req.erase(c);
      }
    }
    e.clear();
    if (!t and req.empty()){
      ans++;
    }
  }
  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...