Submission #912599

#TimeUsernameProblemLanguageResultExecution timeMemory
912599LudisseyBeech Tree (IOI23_beechtree)C++17
9 / 100
2090 ms20384 KiB
#include "beechtree.h"
#include <bits/stdc++.h>
using namespace std;
int N,M;
vector<vector<int>> child;
vector<int> C;
vector<int> P;
vector<int> outp;


std::vector<int> beechtree(int n, int m, std::vector<int> p, std::vector<int> c)
{
    N=n; M=m;
    C.assign(c.begin(), c.end());
    P.assign(p.begin(), p.end());
    child.resize(n);
    outp.resize(n,0);
    for (int i = 1; i < N; i++) child[P[i]].push_back(i);
    
    for (int i = 0; i < N; i++)
    {
        vector<int> perm;
        queue<int> queue;
        queue.push(i);
        while(!queue.empty()){
            int x=queue.front(); queue.pop();
            perm.push_back(x);
            for (auto u : child[x]) queue.push(u);
        }
        sort(perm.begin()+1, perm.end());
        if(perm.size()==1) outp[i]=1;
        do {
            map<int, int> ccnt; 
            bool b=true;
            for (int j = 1; j < perm.size(); j++)
            {
                if(ccnt.find(c[perm[j]])==ccnt.end()) ccnt[c[perm[j]]]=0;
                if(perm[ccnt[c[perm[j]]]]!=P[perm[j]]) {
                    b=false;
                    break;
                }
                ccnt[c[perm[j]]]++;
            }
            if(b) { outp[i]=1; break; }
        } while(next_permutation(perm.begin()+1, perm.end()));
    }
    

    return {outp};
}

Compilation message (stderr)

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