Problem Statement
- G[i][j] = 'R', meaning that i and j are connected by a red edge.
- G[i][j] = 'G', meaning that i and j are connected by a green edge.
- G[i][j] = 'B', meaning that i and j are connected by a blue edge.
- G[i][j] = '.', meaning that i and j are not connected by an edge.
A spanning tree of our graph is any set S of exactly k = n-1 edges such that it is possible to travel from any node to any other node by only using edges from S. Does our graph have a spanning tree that has exactly k/3 edges of each color (red, green, blue)? If it does, return "Exist". Otherwise, return "Does not exist".
Definition
- Class:
- RGBTree
- Method:
- exist
- Parameters:
- String[]
- Returns:
- String
- Method signature:
- String exist(String[] G)
- (be sure your method is public)
Constraints
- n will be between 4 and 13, inclusive.
- n mod 3 will be 1.
- G will contain exactly n elements.
- Each element in G will contain exactly n characters.
- Each character in G will be one of {'.', 'R', 'G', 'B'}.
- For each i, G[i][i] = '.'.
- For each i and j, G[i][j] = G[j][i].
Examples
{".RGB", "R...", "G...", "B..."}
Returns: "Exist"
This graph has exactly three edges: one red, one green, and one blue. These three edges form the desired spanning tree.
{".RRB", "R...", "R...", "B..."}
Returns: "Does not exist"
This graph does also have a spanning tree. Its only spanning tree contains the edges (0,1), (0,2), and (0,3). However, this spanning tree contains two red and no green edges. Thus, a spanning tree with the desired property does not exist.
{".R..BG..G..RG","R...GG..BR.G.","...G.GG.RR.BB","..G.RR.B..GRB","BG.R.G.BRRR.G","GGGRG.R....RR","..G..R.BGRR..","...BB.B.RB.G.","GBR.R.GR.B.R.",".RR.R.RBB.BRB","...GR.R..B...","RGBR.R.GRR...","G.BBGR...B..."}
Returns: "Exist"
{".............",".......BB.R..",".......RR....",".....G.G....R","........BB...","...G.........","........B...R",".BRG.......G.",".BR.B.B...GB.","....B......GR",".R......G....",".......GBG..B","...R..R..R.B."}
Returns: "Does not exist"
{"..B.BB...RB..","......R..B.G.","B.......BB...",".......R...G.","B....GRB..R..","B...G.RG.R...",".R..RR..B.RB.","...RBG...G...","..B...B......","RBB..R.G....R","B...R.R......",".G.G..B.....R",".........R.R."}
Returns: "Exist"
{"....", "....", "....", "...."}
Returns: "Does not exist"
This graph has no spanning trees at all.
{".......R.....","...B.GG.B..B.","...R........B",".BR.R..R..R.R","...R....B.GRR",".G........B..",".G.....B...R.","R..R..B....B.",".B..B.....B.B","...........G.","...RGB..B....",".B..R.RB.G...","..BRR...B...."}
Returns: "Exist"
{".BB.R...G.R..","B..G..BB.GB..","B..R.B.G..R..",".GR....R..RBB","R.........B..","..B...BB.GGBB",".B...B.GG...G",".BGR.BG.B...B","G.....GB..B.R",".G...G....R..","RBRRBG..BR...","...B.B.......","...B.BGBR...."}
Returns: "Exist"
{".G.B..B..B..B","G..BRGB..G...",".....RBB..G..","BB...G.B..G..",".R.......R...",".GRG....G.B..","BBB....G.BB.B","..BB..G......",".....G...GRB.","BG..R.B.G..G.","..GG.BB.R...B","........BG..R","B.....B...BR."}
Returns: "Exist"
{"...G..B....BB","..B..RB.BGRG.",".B......R...B","G....R...R.G.","......RB...GR",".R.R..BRB...G","BB..RB.B..G..","....BRB....B.",".BR..B...B.G.",".G.R....B.G.B",".R....G..G..R","BG.GG..BG....","B.B.RG...BR.."}
Returns: "Exist"
{"....BRB.B..B.","...G...R.G.GB","......RGBBB..",".G..B.R.BRBB.","B..B.G..R..R.","R...G.RG.GR..","B.RR.R....B..",".RG..G.......","B.BBR......G.",".GBR.G....GB.","..BB.RB..G.B.","BG.BR...GBB.B",".B.........B."}
Returns: "Exist"
{"..BBGG.GRR.BR","...GB....GBR.","B..GB..R.G.G.","BGG..G.GR.B.R","GBB..GB...GB.","G..GG.GG..B..","....BG.R.B...","G.RG.GR..B...","R..R.....BB.R","RGG...BBB.GG.",".B.BGB..BG...","BRG.B....G...","R..R....R...."}
Returns: "Exist"
{".R.RB....BG..","R...B...GB..B","........R..BR","R...........B","BB...RB..BB..","....R........","....B.....RG.","........BBBR.",".GR....B.BG..","BB..B..BB...R","G...B.RBG....","..B...GR.....",".BRB.....R..."}
Returns: "Exist"
{"..G..BBBGBR.B",".......B...BR","G...BG..BRG..",".....B..R.GB.","..B..R..B....","B.GBR...R..G.","B......G....B","BB....G.G..B.","G.BRBR.G.B.BB","B.R.....B.R.B","R.GG.....R..R",".B.B.G.BB...B","BR....B.BBRB."}
Returns: "Exist"
{".R..B....BR..","R..R.BBGBBG..","...B..B.GBG.R",".RB..BG.B....","B.......BB...",".B.B.....GBRB",".BBG...R.BG..",".G....R.BR.R.",".BGBB..B.R..G","BBB.BGBRR....","RGG..BG.....G",".....R.R.....","..R..B..G.G.."}
Returns: "Exist"
{"........B.B.R","..B..GG..B.B.",".B...B.......",".......BG..GB",".....G..B.B..",".GB.G..RBR...",".G......G..B.","...B.R..B.B..","B..GBBGB...G.",".B...R....B..","B...B..B.B.B.",".B.G..B.G.B..","R..B........."}
Returns: "Does not exist"
{".....B.GB.RB.","...G...B..B.B","......G...B.R",".G..BG...B..G","...B......R..","B..G...BBG.BG","..G.....GBR..","GB...B..B....","B....BGB.B..R","...B.GB.B....","RBB.R.R....B.","B....B....B.B",".BRG.G..R..B."}
Returns: "Exist"
{"...B..R....BR","....B.RB.R..B","............B","B......B.BGRB",".B...G....B..","....G..BB..RB","RR.......R...",".B.B.B...BB..",".....B.....B.",".R.B..RB...B.","...GB..B.....","B..R.R..BB...","RBBB.B......."}
Returns: "Does not exist"
{".BGB..B.R.BGB","B......R..B.R","G........B.RR","B..........R.",".......B..R.B","............G","B......B.B..B",".R..B.B...BBR","R........B...","..B...B.B.BR.","BB..R..B.B..B","G.RR...B.R...","BRR.BGBR..B.."}
Returns: "Does not exist"
{"...GG...G....","..R..R.G...B.",".R.B...BB...B","G.B....BBRBB.","G......B..B.B",".R.....B...BR","............B",".GBBBB..G....","G.BB...G.....","...R......G..","...BB....G..R",".B.B.B......R","..B.BRB...RR."}
Returns: "Exist"
{"...R..G.G...G","........RRRB.","...BGG..R....","R.B..BB.B....","..G.....B.B..","..GB..R...B..","G..B.R.......","........BB.G.","GRRBB..B..R.R",".R.....B.....",".R..BB..R....",".B.....G.....","G.......R...."}
Returns: "Exist"
{".....B...BG.B","........G.GG.","....B..GB.R.G",".....B....BBB","..B..G.RB.B..","B..BG.B...G..",".....B.B...RB","..G.R.B.GB.RG",".GB.B..G.....","B......B....B","GGRBBG.....B.",".G.B..RR..B.R","B.GB..BG.B.R."}
Returns: "Exist"
{".R..BRBB.....","R......RR..G.","....B.BB.....","....BR.......","B.BB..R.GB...","R..R...GBR.GG","B.B.R.......G","BRB..G...G.RB",".R..GB....RB.","....BR.G...R.","........R...R",".G...G.RBR..R",".....GGB..RR."}
Returns: "Exist"
{".B..G...G.GRB","B..B..GR....B","...B......BR.",".BB..GG.B.G.G","G.....RR...BG","...G..R...B..",".G.GRR..B.GGB",".R..R.....B..","G..B..B....R.","..........GBB","G.BG.BGB.G.B.","R.R.B.G.RBB..","BB.GG.B..B..."}
Returns: "Exist"
{".....R..R..GG","...B.B.GRRG.B",".....GBB.GB.B",".B...G..R.B.G",".........R.BB","RBGG..RG.B...","..B..R...BGB.",".GB..G..B.R..","RR.R...B...BR",".RG.RBB...B.G",".GBB..GR.B...","G...B.B.B....","GBBGB...RG..."}
Returns: "Exist"
{"..R..RRG.B.BG","..BB..BG.R.G.","RB....R...G.R",".B..G.......B","...G........G","R........B.RR","RBR.....GBBB.","GG.......B.B.","......G....R.","BR...BBB..BG.","..G...B..B.BB","BG...RBBRGB.B","G.RBGR....BB."}
Returns: "Exist"
{"..BR...BBB.B.",".....G....BBG","B....BBRB..G.","R....B.R..BBG",".......R..B..",".GBB..R......","..B..R...R...","B.RRR....BR..","B.B.......BG.","B.....RB..B..",".B.BB..RBB.B.","BBGB....G.B..",".G.G........."}
Returns: "Exist"
{"......GB.B...","....RR.....B.","........B..BG","....G...B....",".R.G.B.R.B.GR",".R..B..G.G...","G......G.B.GR","B...RGG...B..","..BB......B.R","B...BGB.....B",".......BB....",".BB.G.G.....B","..G.R.R.RB.B."}
Returns: "Exist"
{"....G....RB..","..G..BG.B.B.G",".G..R.B..B...",".......B.....","G.R...B..G...",".B....B.B..GG",".GB.BB..B..BG","...B.....B...",".B...BB...B..","R.B.G..B....R","BB......B...B",".....GB.....B",".G...GG..RBB."}
Returns: "Does not exist"
{".G..R..B.G..B","G..B...G..RB.","........G.B.B",".B....B..GB.G","R....BRG..R..","....B...RG..R","...BR.......B","BG..G...BR...","..G..R.B.....","G..G.G.R.....",".RBBR........",".B...........","B.BG.RB......"}
Returns: "Exist"
{"..B.G...GB","..B.G.BBBR","BB..RR....","....G.GBGG","GGRG......","..R...B.BR",".B.G.B.RBG",".B.B..R...","GB.G.BB..G","BR.G.RG.G."}
Returns: "Exist"
{"......R...","..B.RRR.BB",".B.BR..R.R","..B..B.RRG",".RR..BRR.R",".R.BB.RRRR","RR..RR..GB","..RRRR....",".B.R.RG...",".BRGRRB..."}
Returns: "Does not exist"
{".R..B...B.","R.R..R..BB",".R.GB..RBB","..G....R.B","B.B..RG...",".R..R.R.B.","....GR..RB","..RR....R.","BBB..BRR.G",".BBB..B.G."}
Returns: "Exist"
{".RGRR.R","R.G.R.B","GG..R..","R.....G","RRR..GR","....G.R","RB.GRR."}
Returns: "Does not exist"
{".RGR..RB...BR","R...B.BR...GG","G...BB.......","R......R.B...",".BB..G......B","..B.G.RRG...B","RB...R....GB.","BR.R.R...B...",".....G....RB.","...B...B..RR.","......G.RR...","BG....B.BR...","RG..BB......."}
Returns: "Exist"
{"....G.GG.GBB.","....GGG..G..B",".....RG.GG...",".....BGB...BB","GG....G....B.",".GRB..BG.....","GGGGGB.RGGR.B","G..B.GR..RG.G","..G...G..BRB.","GGG...GRB.B.B","B.....RGRB...","B..BB...B....",".B.B..BG.B..."}
Returns: "Exist"
{".GG....","G.R.R.R","GR.RG.G","..R.R..",".RGR...","......G",".RG..G."}
Returns: "Does not exist"
{"..BB","..BR","BB.B","BRB."}
Returns: "Does not exist"
{".R.....G..","R...BR.R..",".....G..GG",".....R.G..",".B......G.",".RGR..R.RG",".....R.R..","GR.G..R..G","..G.GR....","..G..G.G.."}
Returns: "Does not exist"
{"..RB..B..RR.R","...BGB......G","R.....B...GB.","BB....B......",".G...RG...RB.",".B..R....R...","B.BBG..G...G.","......G.B.BGR",".......B..GR.","R....R....B.B","R.G.R..BGB...","..B.B.GGR....","RG.....R.B..."}
Returns: "Exist"
{"..G...B","..BG.GG","GB..G.G",".G..BBG","..GB.GG",".G.BG.G","BGGGGG."}
Returns: "Does not exist"
{".BGB.GG","B.RR...","GR.GB.R","BRG.R..","..BR...","G......","G.R...."}
Returns: "Exist"
{".R..G..","R...R..",".....GG",".......","GR.....","..G....","..G...."}
Returns: "Does not exist"
{"..G....","..B.RBB","GB.R...","..R...B",".R....B",".B.....",".B.BB.."}
Returns: "Does not exist"
{".G.....G..","G.GG.G.G..",".G..R.R.B.",".G...R.R..","..R..BG.B.",".G.RB.G..G","..R.GG....","GG.R.....G","..B.B.....",".....G.G.."}
Returns: "Exist"
{"..RBG.B.R.B..","..G.R....RR..","RG.GR.GRGGGGG","B.G..R...G.G.","GRR..R....R..","...RR...RR...","B.G.......R..","..R.......B..","R.G..R....G.G",".RGG.R....R.G","BRG.R.RBGR..R","..GG.........","..G.....GGR.."}
Returns: "Exist"
{"..GBBBB","....BB.","G....BG","B...R.B","BB.R.B.","BBB.B..","B.GB..."}
Returns: "Does not exist"
{".B..BRB","B.RR.R.",".R.GG.B",".RG.R.G","B.GR..B","RR.....","B.BGB.."}
Returns: "Exist"
{".RG..R.B...G.","R.BR.R...G...","GB...RR...B..",".R....RR...GR",".....R...GBBG","RRR.R.RR.....","..RR.R.G...B.","B..R.RG....G.",".............",".G..G.....R..","..B.B....R.R.","G..GB.BG..R.G","...RG......G."}
Returns: "Does not exist"
{".RRB....B....","R......B..BG.","R...R..BR....","B....B..G.RRR","..R..B...R...","...BB.......B",".............",".BB......R.BG","B.RG.......R.","....R..R..B.G",".B.R.....B...",".G.R...BR....","...R.B.G.G..."}
Returns: "Does not exist"
{"..GR.BG","...G.G.","G...G..","RG..R.B","..GR.B.","BG..B.G","G..B.G."}
Returns: "Exist"
{".BBRBR.","B......","B...GR.","R...BB.","B.GB..R","R.RB...","....R.."}
Returns: "Does not exist"
{".G.B....G.G..","G...........G","......R..BRGR","B.....G.G...G",".....R.BR.GG.","....R.BB.B.GG","..RG.B.B.G.G.","....BBB...B..","G..GR.......G","..B..BG...GGB","G.R.G..B.G...","..G.GGG..G...",".GRG.G..GB..."}
Returns: "Exist"
{"....","..R.",".R..","...."}
Returns: "Does not exist"
{"..RB","..G.","RG.B","B.B."}
Returns: "Exist"
{".BG.","B.G.","GG..","...."}
Returns: "Does not exist"
{".....BG","..BG.RR",".B....G",".G..RR.","...R..G","BR.R...","GRG.G.."}
Returns: "Exist"
{"..GGRGR..G...","..B....BG....","GB..BB..GG..G","G...G..B.G.B.","R.BG.BGBB.G..","G.B.B..B..R..","R...G..B..G.G",".B.BBBB.BG.GB",".GG.B..B....G","G.GG...G..BR.","....GRG..B.B.","...B...G.RB..","..G...GBG...."}
Returns: "Exist"
{".RG.","R...","G...","...."}
Returns: "Does not exist"
{".B..RR.R..","B.RG.R....",".R.B..R.R.",".GB.B.B.RR","R..B.RG..R","RR..R...B.","..RBG..RB.","R.....R...","..RR.BB..G","...RR...G."}
Returns: "Exist"
{"..GG","....","G...","G..."}
Returns: "Does not exist"
{".R...GG...","R.B.......",".B...B..B.",".....R.BR.","........G.","G.BR....GR","G........G","...B......","..BRGG....",".....RG..."}
Returns: "Exist"
{".R..R...BR...","R....BR..RG.G","........R.B..","....B....B..B","R..B.B....G..",".B..B...R..RR",".R.........R.","..........BB.","B.R..R......R","RR.B.........",".GB.G..B.....",".....RRB.....",".G.B.R..R...."}
Returns: "Does not exist"
{"......RGB.","..B....GBB",".B.R.G..B.","..R..G.B.G",".....R.B.B","..GGR...B.","R.........","GG.BB.....","BBB..B....",".B.GB....."}
Returns: "Exist"
{"..GB....GRR..","...GGB..G..RG","G...BB..G...R","BG..G..B...RG",".GBG.G.G..R..",".BB.G.G.GBB.B",".....G.GG..G.","...BG.G.BB...","GGG..GGB.GG..","R....B.BG...G","R...RB..G...G",".R.R..G......",".GRG.B...GG.."}
Returns: "Exist"
{".RBGRR.","R.GB.RR","BG..BG.","GB..GGR","R.BG...","RRGG...",".R.R..."}
Returns: "Exist"
{"..GRB.R.B.R.B",".....B.G..R.R","G..G.R..G....","R.G.G..B..RB.","B..G.RG.....R",".BR.R..B.G.B.","R...G..GBBGG.",".G.B.BG.....G","B.G...B...B.B",".....GB...BB.","RR.R..G.BB.B.","...B.BG..BB..","BR..R..GB...."}
Returns: "Exist"
{".GR.","G..G","R..R",".GR."}
Returns: "Does not exist"
{"..GB.GG.B...R","..RGRRGB.G...","GR.BB....BBGG","BGB.B..GBG.B.",".RBB.G.G.RBBG","GR..G.GGR.R.R","GG...G.RGBR..",".B.GGGR...GR.","B..B.RG..RR.R",".GBGR.B.R..B.","..B.BRRGR....","..GBB..R.B...","R.G.GR..R...."}
Returns: "Exist"
{"....B.....","...RG.GR..","......BG..",".R...G.RB.","BG...G....","...GG....R",".GB....BB.",".RGR..B...","...B..B...",".....R...."}
Returns: "Exist"
{".B...R.","B.....B","...G.B.","..G.GBG","...G.GB","R.BBG.B",".B.GBB."}
Returns: "Does not exist"
{"...B.B.B..","....RG.BB.","...B..B.R.","B.B.B...BB",".R.B......","BG.....RG.","..B.....BG","BB...R....",".BRB.GB...","...B..G..."}
Returns: "Exist"
{".B.....","B..B..B","......B",".B....B","......B","......B",".BBBBB."}
Returns: "Does not exist"
{"...R......","..GGGG..GB",".G...RR.G.","RG...B....",".G........",".GRB..GRG.","..R..G....",".....R....",".GG..G....",".B........"}
Returns: "Does not exist"
{"..R..BG","..RBRR.","RR.RG.G",".BR....",".RG...R","BR.....","G.G.R.."}
Returns: "Exist"
{".G..GG.B.G","G..R....RR","...RGG.BRG",".RR..RR...","G.G..GG...","G.GRG.GGR.","...RGG....","B.B..G...B",".RR..R...B","GRG....BB."}
Returns: "Exist"
{"..R.","..BB","RB.R",".BR."}
Returns: "Does not exist"
{"..GBB.G","..G..R.","GG...R.","B.....R","B......",".RR...R","G..R.R."}
Returns: "Exist"
{"..RG..R.....B","..BR.R...BRGR","RB.BBB...B...","GRB...G.R.G.B","..B..GR..B.BG",".RB.G.R.RB.BB","R..GRR.G.RR..","......G...G..","...R.R....BGB",".BB.BBR.....R",".R.G..RGB..B.",".G..BB..G.B.R","BR.BGB..BR.R."}
Returns: "Exist"
{".......","....RRR","...R...","..R....",".R.....",".R.....",".R....."}
Returns: "Does not exist"
{"....","..R.",".R..","...."}
Returns: "Does not exist"
{".B.B.RR","B.R.R.R",".R..B..","B....R.",".RB..R.","R..RR..","RR....."}
Returns: "Does not exist"
{".RGR..R","R..BBBR","G..B.B.","RBB.R.R",".B.R...",".BB...R","RR.R.R."}
Returns: "Does not exist"
{".RBR.BB...","R.G..BBBBB","BG..BG.GB.","R....GG...","..B...B.RG","BBGG...BB.","BB.GB....G",".BG..B..RG",".BB.RB.R..",".B..G.GG.."}
Returns: "Exist"
{"..RB...GGB...","...B...B...G.","R...B..B.....","BB...B...BR..","..B...B.....B","...B..BB..GBG","....BB.....BB","GBB..B..BBBBB","G......B....B","B..B...B.....","...R.G.B.....",".G...BBB.....","....BGBBB...."}
Returns: "Does not exist"
{"...G.R....",".........R","..........","G.........",".......B..","R.........","........R.","....B.....","......R...",".R........"}
Returns: "Does not exist"
{"...RR..","......R",".....GB","R...RRB","R..R...","..GR...",".RBB..."}
Returns: "Does not exist"
{"........R.","........BR","....RBR...",".....G....","..R.....RB","..BG..B.G.","..R..B...R","..........","RB..RG....",".R..B.R..."}
Returns: "Does not exist"
{"..G.","..B.","GB.G","..G."}
Returns: "Does not exist"
{".BGBRBG.RR","B.RGGGRGB.","GR.BRB..G.","BGB...R.GG","RGR..RRG.R","BGB.R.B..G","GR.RRB.BG.",".G..G.B..G","RBGG..G..B","R..GRG.GB."}
Returns: "Exist"
{".............", ".......BB.R..", ".......RR....", ".....G.G....R", "........BB...", "...G.........", "........B...R", ".BRG.......G.", ".BR.B.B...GB.", "....B......GR", ".R......G....", ".......GBG..B", "...R..R..R.B." }
Returns: "Does not exist"
{".RRB", "R...", "R...", "B..." }
Returns: "Does not exist"
{"..B.BB...RB..", "......R..B.G.", "B.......BB...", ".......R...G.", "B....GRB..R..", "B...G.RG.R...", ".R..RR..B.RB.", "...RBG...G...", "..B...B......", "RBB..R.G....R", "B...R.R......", ".G.G..B.....R", ".........R.R." }
Returns: "Exist"
{".RGB", "R...", "G...", "B..." }
Returns: "Exist"
{".R.R", "R.G.", ".G.B", "R.B." }
Returns: "Exist"
{".R..BG..G..RG", "R...GG..BR.G.", "...G.GG.RR.BB", "..G.RR.B..GRB", "BG.R.G.BRRR.G", "GGGRG.R....RR", "..G..R.BGRR..", "...BB.B.RB.G.", "GBR.R.GR.B.R.", ".RR.R.RBB.BRB", "...GR.R..B...", "RGBR.R.GRR...", "G.BBGR...B..." }
Returns: "Exist"