Submission #1200148

#TimeUsernameProblemLanguageResultExecution timeMemory
1200148hackstarSeptember (APIO24_september)C++17
45 / 100
123 ms8668 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { vector<vector<int>>g(N); for(int i=0;i<F.size();i++){ if(~F[i]){ g[F[i]].emplace_back(i); } } vector<set<int>>st(M); vector<vector<int>>vis(M,vector<int>(N,0)); auto dfs=[&](auto dfs,int id,int u)->void{ vis[id][u]=1; for(auto v:g[u]){ if(vis[id][v]){ continue; } st[id].insert(v); dfs(dfs,id,v); } }; int ans=0; for(int i=0;i<N-1;i++){ int cur=S[0][i]; if(st[0].count(cur)){ st[0].erase(cur); } else{ dfs(dfs,0,cur); } ans+=(st[0].empty()); } //cout<<ans<<'\n'; for(int j=1;j<M;j++){ int cur=0; for(int i=0;i<N-1;i++){ int cur=S[j][i]; if(st[j].count(cur)){ st[j].erase(cur); } else{ dfs(dfs,j,cur); } cur+=(st[j].empty()); } ans+=min(1,cur); } return ans; }
#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...