제출 #1367961

#제출 시각아이디문제언어결과실행 시간메모리
1367961KALARRY9월 (APIO24_september)C++17
59 / 100
96 ms20712 KiB
//chockolateman

#include<bits/stdc++.h>
#include "september.h"

using namespace std;

int n,m,pos[100005][5],need[100005][5];
vector<int> adj[100005];

void dfs(int v,int p)
{
    if(v != 0)
    {
        for(int i = 0 ; i < m ; i++)
            need[v][i] = pos[v][i];
    }
    for(auto u : adj[v])
        if(u != p)
        {
            dfs(u,v);
            for(int i = 0 ; i < m ; i++)
                need[v][i] = max(need[v][i],need[u][i]);
        }
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	n = N;
    m = M;
    for(int i = 1 ; i <= N-1 ; i++)
    {
        adj[i].push_back(F[i]);
        adj[F[i]].push_back(i);
    }
    for(int i = 0 ; i < M ; i++)
        for(int j = 0 ; j < N-1 ; j++)
            pos[S[i][j]][i] = j;
    dfs(0,0);
    int cur_pos = 0;
    int lim[5] = {0,0,0,0,0};
    int ans = 0;
    while(cur_pos < N-1)
    {

        for(int i = 0 ; i < M ; i++)
            lim[i] = max(lim[i],need[S[i][cur_pos]][i]);
        bool good = true;
        for(int i = 0 ; i < M ; i++)
            if(cur_pos < lim[i])
                good = false;
        if(good)
            ans++;
        cur_pos++;
    }
    for(int i = 0 ; i < N ; i++)
        adj[i].clear();
    return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…