Submission #1184359

#TimeUsernameProblemLanguageResultExecution timeMemory
1184359HADI_TSeptember (APIO24_september)C++20
0 / 100
2 ms2884 KiB
#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 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...