From 9ebfd7886b3bee5cd6a09f66f19c181f32012ed8 Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Sun, 21 Jul 2024 12:45:22 +0530 Subject: [PATCH] Create 2392. Build a Matrix With Conditions --- 2392. Build a Matrix With Conditions | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 2392. Build a Matrix With Conditions diff --git a/2392. Build a Matrix With Conditions b/2392. Build a Matrix With Conditions new file mode 100644 index 00000000..c753c6a7 --- /dev/null +++ b/2392. Build a Matrix With Conditions @@ -0,0 +1,64 @@ +class Solution { +public: + + bool toposort(vector> &adj, vector &tsort, vector &ind) + { + int V = ind.size(); + queue q; + + for(int i=0 ; i> buildMatrix(int k, vector>& rowConditions, vector>& colConditions) { + + vector> adj_row(k, vector ()); + vector> adj_col(k, vector ()); + + vector ind_row(k, 0); + vector ind_col(k, 0); + + for(auto &edge: rowConditions) + { + adj_row[edge[0]-1].push_back(edge[1]-1); + ind_row[edge[1]-1] += 1; + } + + for(auto &edge: colConditions) + { + adj_col[edge[0]-1].push_back(edge[1]-1); + ind_col[edge[1]-1] += 1; + } + + vector tsort_row; + vector tsort_col; + + bool notCycle_row = toposort(adj_row, tsort_row, ind_row); + bool notCycle_col = toposort(adj_col, tsort_col, ind_col); + + if(!notCycle_row || !notCycle_col) return {}; + vector> ans(k, vector (k, 0)); + + for(int row = 0 ; row < k ; row++) + { + int col = find(tsort_col.begin(), tsort_col.end(), tsort_row[row]) - tsort_col.begin(); + ans[row][col] = tsort_row[row]+1; + } + + return ans; + } +};