Submission #1366480

#TimeUsernameProblemLanguageResultExecution timeMemory
1366480rahidilbayramliSeptember (APIO24_september)C++20
0 / 100
1 ms344 KiB
#include "september.h"
#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define vl vector<ll>
#define vi vector<int>
#define pb push_back
#define sz(v) (ll)(v.size())
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define f first
#define s second
#define pii pair<int, int>
#define pll pair<ll, ll>
using namespace std;
const int sz = 1e5+5;
vi g[sz];
int vis[sz], deg[sz];
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
    for(int i = 0; i < N; i++)
    {
        deg[i]++;
        deg[F[i]]++;
        if(F[i] != -1){
            g[i].pb(F[i]);
            g[F[i]].pb(i);
        }
    }
    vector<pii>vect[M+5];
    for(int i = 0; i < M; i++)
    {
        int cnt = 0, lst = 0;
        set<int>st;
        for(int j = 0; j < N - 1; j++)
        {
            if(deg[S[i][j]] == 1)
            {
                queue<int>q;
                q.push(S[i][j]);
                while(sz(q))
                {
                    int nd = q.front();
                    if(st.find(nd) != st.end())
                        st.erase(nd);
                    q.pop();
                    for(auto u : g[nd])
                    {
                        deg[u]--;
                        if(deg[u] == 1 && st.find(u) != st.end())
                            q.push(u);
                    }
                }
            }
            else
            {
                st.insert(S[i][j]);
            }
            if(!sz(st)){
                vect[i].pb({lst+1, j+1});
                lst = j + 1;
                cnt++;
            }
        }
        for(int j = 0; j < N; j++)
            deg[j] = 0;
        for(int j = 0; j < N; j++)
        {
            deg[j]++;
            deg[F[j]]++;
        }
    }
    map<int, int>mp;
    for(int i = 0; i < M; i++)
    {
        for(auto u : vect[i])
            mp[u.s]++;
    }
    int res = 0;
    for(auto u : mp)
    {
        if(u.s == M)
            res++;
    }
    return res;
    for(int i = 0; i < N; i++)
    {
        g[i].clear();
        vis[i] = 0;
        deg[i] = 0;
    }
    return res;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...