#include "september.h"
#include <bits/stdc++.h>
#define ll long long
#define F first
#define S second
#define pb push_back
const int N = 1e5+10;
using namespace std;
vector<int>adj[N];
bool vis[N];
set<int>st;
void dfs(int node,int parent)
{
//cout<<node<<endl;
if(vis[node])
return ;
vis[node] = 1;
for(auto it:adj[node])
{
if(it == parent)
continue;
st.insert(it);
dfs(it , node);
}
}
int solve(int n, int m, std::vector<int> f, std::vector<std::vector<int>> s) {
int ans = INT_MAX;
for(int i=1;i<n;i++)
{
adj[i].pb(f[i]);
adj[f[i]].pb(i);
}
for(int i=0;i<m;i++)
{
int cur = 0;
for(int j=0;j<n;j++)
vis[j] = 0;
st.clear();
for(int j=0;j<s[i].size();j++)
{
if(st.find(s[i][j]) != st.end())
{
st.erase(st.find(s[i][j]));
continue;
}
if(st.empty())
cur++;
dfs(s[i][j],f[s[i][j]]);
}
ans = min(ans , cur);
}
for(int i=0;i<n;i++)
{
adj[i].clear();
vis[i] = 0;
}
st.clear();
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... |