Submission #992579

#TimeUsernameProblemLanguageResultExecution timeMemory
992579KasymKSeptember (APIO24_september)C++17
100 / 100
106 ms12936 KiB
#include "bits/stdc++.h"
using namespace std;
const int N = 1e5+5;
vector<int> adj[N];
int pos[N], vis[N], r;

void dfs(int nd){
    if(vis[nd])
        return;
    vis[nd] = 1;
    r = max(r, pos[nd]);
    for(auto i : adj[nd])
        dfs(i);
}

int solve(int n, int m, vector<int> F, vector<vector<int>> S){
    // assert(m == 1);
    for(int i = 0; i <= n; ++i)
        adj[i].clear(), pos[i] = 0, vis[i] = 0;
    for(int i = 1; i < n; ++i)
        adj[F[i]].push_back(i);
    for(int i = 0; i < n-1; ++i)
        for(int k = 0; k < m; ++k)
            pos[S[k][i]] = max(pos[S[k][i]], i);
    int l = 0, answer = 0;
    r = 0;
    while(r < n-1){
        while(l <= r){
            for(int k = 0; k < m; ++k)
                dfs(S[k][l]);
            l++;
        }
        r++, answer++;
    }
    return answer;
}
#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...