Advertisement
nikunjsoni

568

Jun 5th, 2021
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int maxVacationDays(vector<vector<int>>& flights, vector<vector<int>>& days) {
  4.         int n = flights.size(), k = days[0].size();
  5.         vector<vector<int>> dp(n+1, vector<int>(k+1,0));
  6.         vector<vector<int>> graph(n);
  7.         for(int i=0; i<n; i++){
  8.             for(int j=0; j<n; j++){
  9.                 if(flights[i][j] || i == j)
  10.                     graph[i].push_back(j);
  11.             }
  12.         }
  13.        
  14.         for(int week=k-1; week>=0; week--){
  15.             for(int curCity=0; curCity<n; curCity++){
  16.                 for(int destCity: graph[curCity]){
  17.                     dp[curCity][week] = max(days[destCity][week]+dp[destCity][week+1], dp[curCity][week]);
  18.                 }
  19.             }
  20.         }
  21.         return dp[0][0];
  22.     }
  23. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement