제출 #1166824

#제출 시각아이디문제언어결과실행 시간메모리
1166824icebearSeptember (APIO24_september)C++20
59 / 100
106 ms22720 KiB
// ~~ icebear love atttt ~~ #include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; const int inf = 1e9 + 27092008; const long long INF = 1e18 + 27092008; const int N = 2e5 + 5; vector<int> G[N]; int maxDay[5][N]; void dfs(int id, int u, int par) { for(int v : G[u]) if (v != par) { dfs(id, v, u); maxDay[id][u] = max(maxDay[id][u], maxDay[id][v]); } } int solve(int numNode, int numPerson, vector<int> graph, vector<vector<int>> records) { for(int i = 1; i < numNode; i++) { G[i].push_back(graph[i]); G[graph[i]].push_back(i); } for(int i = 0; i < numPerson; i++) for(int j = 0; j < numNode - 1; j++) { maxDay[i][records[i][j]] = j; } for(int i = 0; i < numPerson; i++) dfs(i, 0, -1); int last_day = -1, ans = 0; for(int cur_day = 0; cur_day < numNode - 1; cur_day++) { if (last_day < cur_day) ans++; int max_day = 0; for(int per = 0; per < numPerson; per++) max_day = max(max_day, maxDay[per][records[per][cur_day]]); // cout << cur_day << ' ' << max_day << endl; last_day = max(last_day, max_day); } for(int i = 0; i < numNode; i++) G[i].clear(); return ans; } // int main() { // ios_base::sync_with_stdio(0); // cin.tie(0); cout.tie(0); // cout << solve(3, 1, {-1, 0, 0}, {{1, 2}}) << endl; // cout << solve(5, 2, {-1, 0, 0, 1, 1}, {{1, 2, 3, 4}, {4, 1, 2, 3}}) << endl; // 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...