# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
149773 | 욱방켜!! (twitch.tv/wookje) (#200) | Bulb Game (FXCUP4_bulb) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bulb.h"
std::vector<int> L, R;
int dist[300000], mdist;
void dfs(int c, int v)
{
mdist=std::max(mdist,v);
if(L[c]>=0) {
dist[L[c]]=dist[c]+1;
dfs(L[c],v);
}
if(R[c]>=0) {
dist[R[c]]=dist[c]+1;
dfs(R[c],v+1);
}
}
int FindWinner(int T, std::vector<int> L, std::vector<int> R){
int N = L.size(), c, n, t;
std::vector<int> t1, t2;
::L=L; ::R=R;
for(c=0;c>=0;c=L[c]) {
bool valid=false;
for(n=R[c];n>=0;n=L[n]) {
for(t=R[n];t>=0;t=L[t]);
if(t==-1) valid=true;
}
if(valid) t2.push_back(c);
if(n==-2) t1.push_back(c);
}
std::sort(t1.begin(),t1.end());
std::sort(t2.begin(),t2.end());
if(c==-2 || t1.size()>1 || t1.size()==1 && !binary_search(t2.begin(),t2.end(),t1[0])) return 0;
dfs(0,0);
if(t1.empty()) return mdist>1 || t2.size()>0;
return 1;
}