#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |