classSolution{public:intmaximumRequests(intn,vector<vector<int>>&requests){intans=0;vector<int>degree(n);// degree[i] := degree of building ifunction<void(int,int)>dfs=[&](inti,intprocessedReqs){if(i==requests.size()){if(all_of(begin(degree),end(degree),[](intd){returnd==0;}))ans=max(ans,processedReqs);return;}// skip requests[i]dfs(i+1,processedReqs);// process requests[i]--degree[requests[i][0]];++degree[requests[i][1]];dfs(i+1,processedReqs+1);--degree[requests[i][1]];++degree[requests[i][0]];};dfs(0,0);returnans;}};
JAVA
classSolution{publicintmaximumRequests(intn,int[][]requests){dfs(0,0,requests,newint[n]);returnans;}privateintans=0;privatevoiddfs(inti,intprocessedReqs,int[][]requests,int[]degree){if(i==requests.length){if(Arrays.stream(degree).allMatch(d->d==0))ans=Math.max(ans,processedReqs);return;}// skip requests[i]dfs(i+1,processedReqs,requests,degree);// process requests[i]--degree[requests[i][0]];++degree[requests[i][1]];dfs(i+1,processedReqs+1,requests,degree);--degree[requests[i][1]];++degree[requests[i][0]];}}
Login to Codeflu
Log in to stay update and get notify on new arrivals.