Skip to content

Commit 62c69ab

Browse files
authored
Create 2127. Maximum Employees to Be Invited to a Meeting (#697)
2 parents 37e1217 + 74f108b commit 62c69ab

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
class Solution {
2+
public:
3+
int maximumInvitations(vector<int>& favorite) {
4+
5+
int n = favorite.size();
6+
vector<int> indegree(n, 0);
7+
vector<int> chain(n, 0);
8+
vector<bool> vis(n, false);
9+
for (int i : favorite) {
10+
indegree[i]++;
11+
}
12+
queue<int> q;
13+
for (int i = 0; i < n; i++) {
14+
if (!indegree[i]) {
15+
q.push(i);
16+
}
17+
}
18+
while (!q.empty()) {
19+
int front = q.front();
20+
q.pop();
21+
vis[front] = true;
22+
int next = favorite[front];
23+
chain[next] = chain[front] + 1;
24+
if (--indegree[next] == 0) {
25+
q.push(next);
26+
}
27+
}
28+
29+
int maxCycle = 0, total = 0;
30+
for (int i = 0; i < n; i++) {
31+
if (!vis[i]) {
32+
int c = i, len = 0;
33+
while (!vis[c]) {
34+
vis[c] = true;
35+
c = favorite[c];
36+
len++;
37+
}
38+
if (len == 2) {
39+
total += (2 + chain[i] + chain[favorite[i]]);
40+
} else {
41+
maxCycle = max(maxCycle, len);
42+
}
43+
}
44+
}
45+
return max(total, maxCycle);
46+
47+
}
48+
};

0 commit comments

Comments
 (0)