Submission #149763

#TimeUsernameProblemLanguageResultExecution timeMemory
149763test team (#200)Bulb Game (FXCUP4_bulb)C++17
0 / 100
2 ms376 KiB
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "bulb.h" #include "bulb.h" #include<bits/stdc++.h> using namespace std; int l[300100],r[300100]; bool exist[300100]; vector<int> wen,owe; void dfs(int node) { if(owe[node]==-1) r[node]=1; if(owe[node]==-2) r[node]=2; if(owe[node]>=0) { dfs(owe[node]); r[node]=l[owe[node]]; } if(r[node]==2) exist[node]=true; if(wen[node]==-1) l[node]=1; if(wen[node]==-2) l[node]=2; if(wen[node]>=0) { dfs(wen[node]); l[node]=l[wen[node]]; if(exist[node]==false&&exist[wen[node]]) exist[node]=true; } } int FindWinner(int T, std::vector<int> L, std::vector<int> R){ int N = L.size(); for(int i=0;i<N;i++) { wen.push_back(L[i]); owe.push_back(R[i]); } dfs(0); if(l[0]==2) return 0; int node=0,s=0,p=0; while(r[node]==1) { s++; p++; if(owe[node]<0) return 0; if(exist[owe[node]]==false) return 0; if(r[owe[node]]==2) p++; if(wen[node]<0) break; node=wen[node]; } int first=owe[node]; if(r[node]==2) { while(first>=0) { s++; first=wen[first]; if(r[first]==2) return 0; } if(s<N-1) return 0; return 1; } if(p==N) return 1; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...