First Day Where You Have Been in All the Rooms LeetCode solution in C++
1#define ll long long2int mod = 1e9 + 7;3class Solution {4public:5int firstDayBeenInAllRooms(vector<int> &nextVisit) {6int n = nextVisit.size();7vector<vector<ll>> dp(n, vector<ll>(2, 0));8dp[0][0] = 2;9dp[0][1] = 1;10for (int i = 1; i < n; i++) {11dp[i][1] = dp[i - 1][0] + 1;12if (i == n - 1) break;13dp[i][0] = (dp[i][1] + (dp[i - 1][0] - dp[nextVisit[i]][1]) + 2) % mod;14}15return (dp[n - 1][1] + mod - 1) % mod;16}17};