# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1200093 | prince | September (APIO24_september) | C++20 | 0 ms | 0 KiB |
#include "bits/stdc++.h"
using namespace std;
vector<vector<int>>g;
vector<bool>vis;
set<int>st;
void dfs(int u){
vis[u]=true;
for(int v:g[u]){
if(!vis[v])st.insert(v),dfs(v);
}
}
int main(){
int n,m;cin>>n>>m;
g.assign(n,{});
for(int i=0;i<n;i++){
int x;cin>>x;
if(x>=0)g[x].push_back(i);
}
int mn = 1e9;
while(m--){
st.clear();
vis.assign(n,false);
int cnt=0;
for(int i=1;i<n;i++){
int x;cin>>x;
if(st.count(x))st.erase(x);
else dfs(x);
if(st.empty())cnt++;
}
mn=min(mn,cnt);
}
cout<<mn;
}