제출 #1151193

#제출 시각아이디문제언어결과실행 시간메모리
1151193TroySer9월 (APIO24_september)C++20
45 / 100
840 ms18844 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int solve(int N, int M, vector<int> F, vector<vector<int> > S) { vector<vector<ll> > adjList; adjList.resize(N); for (ll i = 1; i < N; i++) { adjList[F[i]].push_back(i); } set<ll> beenBanished; vector<int> firstS = S[0]; map<ll, ll> actualIndex; for (ll i = 0; i < N - 1; i++) { actualIndex[firstS[i]] = i; } ll banishmentIndex = 0; ll maxK = 1; for (ll i = 0; i < N - 1; i++) { // cout << firstS[i] << " " << i << ", " << banishmentIndex << endl; if (banishmentIndex < i) { maxK++; } queue<ll> bfsQueue; bfsQueue.push(firstS[i]); while (!bfsQueue.empty()) { ll currentIndex = bfsQueue.front(); bfsQueue.pop(); if (beenBanished.find(currentIndex) != beenBanished.end()) { continue; } beenBanished.insert(currentIndex); banishmentIndex = max(banishmentIndex, actualIndex[currentIndex]); for (ll v: adjList[currentIndex]) { bfsQueue.push(v); } } } return maxK; }
#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...