Submission #1159604

#TimeUsernameProblemLanguageResultExecution timeMemory
1159604LolkasMeepSeptember (APIO24_september)C++20
100 / 100
508 ms28264 KiB
#include "bits/stdc++.h" using namespace std; typedef long long int ll; int solve(int N, int M, vector<int> F,vector<vector<int>> S){ vector<unordered_set<int>> adjList(N); for(int i = 1; i < N; i++){ adjList[i].insert(F[i]); adjList[F[i]].insert(i); } vector<int> leafToIndex(N,-1); for(int i = 0; i < N-1; i++){ leafToIndex[S[0][i]] = i; } vector<bool> visited(N); visited[0] = true; int counts = 0; int components = 1; int minIndex = N; for(int i = N-2; i >= 0; i--){ components++; int node = S[0][i]; for(const int &adjNode : adjList[node]){ if(visited[adjNode]) components--; } // cout << i << " " << components << '\n'; for(int j = 0; j < M; j++) minIndex = min(minIndex, leafToIndex[S[j][i]]); if(components == 1 && minIndex >= i){ counts++; } visited[node] = true; } return counts; } // int main(){ // cout << "poop\n"; // cout << solve(5, 2, {-1, 0, 0, 1, 1}, {{1, 2, 3, 4}, {4, 1, 2, 3}}) << '\n'; // return 0; // }
#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...