제출 #1175525

#제출 시각아이디문제언어결과실행 시간메모리
1175525rafsanamin20209월 (APIO24_september)C++20
0 / 100
1098 ms47352 KiB
#include "september.h"
#include <bits/stdc++.h>

using namespace std;

const int MAX = 1E6;
int maxidx = 0;

vector<vector<int>> idx(5, vector<int>(MAX));
vector<vector<int>> C_List(MAX);
vector<int> visited(MAX);

void dfs(int n, int N, int M)
{
  if (visited[n])
  {
    return;
  }

  for (int i = 0; i < idx.size(); i++)
  {
    maxidx = max(maxidx, idx[i][n]);
  }

  for (int i = 0; i < C_List[n].size(); i++)
  {
    dfs(C_List[n][i], N, M);
  }
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S)
{

  int ans = 0;

  for (int i = 1; i < N; i++)
  {
    C_List[F[i]].push_back(i);
  }

  for (int i = 0; i < M; i++)
  {
    for (int j = 0; j < N - 1; j++)
    {
      idx[i][S[i][j]] = j;
    }
  }

  for (int i = 0; i < N - 1; i++)
  {
    for (int j = 0; j < M; j++)
    {
      dfs(S[j][i], N, M);
    }
    if (maxidx == i)
    {
      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...