2
public int[] smallestSufficientTeam(String[] req_skills, List<List<String>> people) {3
int N = 1 << req_skills.length, INF = (int) 1e9;4
int[] parent = new int[N];5
int[] who = new int[N];9
for (int i = 0; i < N; i++) {10
if (dp[i] != INF) { // valid state11
for (int k = 0; k < people.size(); k++) {13
for (int j = 0; j < req_skills.length; j++) {14
for (String skill : people.get(k)) {15
if (req_skills[j].equals(skill)) {16
cur |= 1 << j; // set the mask21
if (dp[cur] > dp[i] + 1) { // replace if better29
int[] ans = new int[dp[N - 1]];30
for (int i = 0, cur = N - 1; i < ans.length; i++) {