Submission #1063246

#TimeUsernameProblemLanguageResultExecution timeMemory
1063246De3b0oBeech Tree (IOI23_beechtree)C++17
9 / 100
2094 ms31112 KiB
#include "beechtree.h"
#include<bits/stdc++.h>
#include<random>
#define ll long long
#define F first
#define S second
#define in insert
#define pb push_back
#define ppb pop_back()
#define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define cans cout << ans << "\n";
#define yes cout << "Yes" << "\n";
#define no cout << "No" << "\n";
#define pll pair<ll,ll>
#define lin cout << "\n";
#define sqr 340
#define mod 1000000007
#define mid ((l+r)/2)
#define lc (2*x)
#define rc (2*x+1)
#define sq 547

using namespace std;

vector<ll> adj[200009];
ll n , m;
ll p[200009] , c[200009];
vector<ll> v;

void dfs(ll x , ll pr)
{
    v.pb(x);
    for(auto it : adj[x])
    {
        if(it==pr)
            continue;
        dfs(it,x);
    }
}

std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C)
{
    n=N;
    m=M;
    for(int i = 1 ; n>i ; i++)
    {
        adj[i].pb(P[i]);
        adj[P[i]].pb(i);
    }
    for(int i = 0 ; n>i ; i++)
    {
        p[i]=P[i];
        c[i]=C[i];
    }
    vector<int> ans;
    for(int i = 0 ; n>i ; i++)
    {
        v.clear();
        dfs(i,p[i]);
        bool g = 0;
        sort(v.begin(),v.end());
        do
        {
            if(v[0]!=i)
                continue;
            bool gg = 1;
            for(int j = 1 ; v.size()>j ; j++)
            {
                ll x = 0;
                for(int h = 1 ; j>h ; h++)
                {
                    if(c[v[h]]==c[v[j]])
                        x++;
                }
                if(p[v[j]]!=v[x])
                    gg=0;
            }
            if(gg)
                g=1;
        }
        while(next_permutation(v.begin(),v.end()));
        ans.pb(g);
    }
    return ans;
}

Compilation message (stderr)

beechtree.cpp: In function 'std::vector<int> beechtree(int, int, std::vector<int>, std::vector<int>)':
beechtree.cpp:67:37: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   67 |             for(int j = 1 ; v.size()>j ; j++)
      |                             ~~~~~~~~^~
#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...