diff --git a/solution/0500-0599/0568.Maximum Vacation Days/README.md b/solution/0500-0599/0568.Maximum Vacation Days/README.md
index 0b759e9bf93c8..c482a1c70a038 100644
--- a/solution/0500-0599/0568.Maximum Vacation Days/README.md	
+++ b/solution/0500-0599/0568.Maximum Vacation Days/README.md	
@@ -98,7 +98,7 @@ Ans = 7 + 7 + 7 = 21
 
 我们定义 $f[k][j]$ 表示前 $k$ 周,且最后一周在城市 $j$ 休假的最长天数。初始时 $f[0][0]=0$,其它 $f[0][j]=-\infty$。答案为 $\max_{j=0}^{n-1} f[K][j]$。
 
-接下来,我们考虑如何计算 $f[k][j]$。对于当前这一周,我们可以枚举上一周所在的城市 $i$,城市 $i$ 可以和城市 $j$ 相等,那么 $f[k][j] = f[k-1][i]$;也可以和城市 $j$ 不相等,如果不相等,我们需要判断是否可以从城市 $i$ 飞到城市 $j$,如果可以,那么 $f[k][j] = max(f[k][j], f[k-1][i])$。最后,我们还需要加上这一周在城市 $j$ 休假的天数 $days[j][k-1]$。
+接下来,我们考虑如何计算 $f[k][j]$。对于当前这一周,我们可以枚举上一周所在的城市 $i$,城市 $i$ 可以和城市 $j$ 相等,那么 $f[k][j] = f[k-1][i]$;也可以和城市 $j$ 不相等,如果不相等,我们需要判断是否可以从城市 $i$ 飞到城市 $j$,如果可以,那么 $f[k][j] = \max(f[k][j], f[k-1][i])$。最后,我们还需要加上这一周在城市 $j$ 休假的天数 $\textit{days}[j][k-1]$。
 
 最终的答案即为 $\max_{j=0}^{n-1} f[K][j]$。
 
@@ -220,6 +220,59 @@ func maxVacationDays(flights [][]int, days [][]int) (ans int) {
 }
 ```
 
+#### TypeScript
+
+```ts
+function maxVacationDays(flights: number[][], days: number[][]): number {
+    const n = flights.length;
+    const K = days[0].length;
+    const inf = Number.NEGATIVE_INFINITY;
+    const f: number[][] = Array.from({ length: K + 1 }, () => Array(n).fill(inf));
+    f[0][0] = 0;
+    for (let k = 1; k <= K; k++) {
+        for (let j = 0; j < n; j++) {
+            f[k][j] = f[k - 1][j];
+            for (let i = 0; i < n; i++) {
+                if (flights[i][j]) {
+                    f[k][j] = Math.max(f[k][j], f[k - 1][i]);
+                }
+            }
+            f[k][j] += days[j][k - 1];
+        }
+    }
+    return Math.max(...f[K]);
+}
+```
+
+#### Rust
+
+```rust
+impl Solution {
+    pub fn max_vacation_days(flights: Vec<Vec<i32>>, days: Vec<Vec<i32>>) -> i32 {
+        let n = flights.len();
+        let k = days[0].len();
+        let inf = i32::MIN;
+
+        let mut f = vec![vec![inf; n]; k + 1];
+        f[0][0] = 0;
+
+        for step in 1..=k {
+            for j in 0..n {
+                f[step][j] = f[step - 1][j];
+                for i in 0..n {
+                    if flights[i][j] == 1 {
+                        f[step][j] = f[step][j].max(f[step - 1][i]);
+                    }
+                }
+                f[step][j] += days[j][step - 1];
+            }
+        }
+
+        *f[k].iter().max().unwrap()
+    }
+}
+```
+
 <!-- tabs:end -->
 
 <!-- solution:end -->
diff --git a/solution/0500-0599/0568.Maximum Vacation Days/README_EN.md b/solution/0500-0599/0568.Maximum Vacation Days/README_EN.md
index 03606fb98ba45..76fc29b6c73be 100644
--- a/solution/0500-0599/0568.Maximum Vacation Days/README_EN.md	
+++ b/solution/0500-0599/0568.Maximum Vacation Days/README_EN.md	
@@ -211,6 +211,59 @@ func maxVacationDays(flights [][]int, days [][]int) (ans int) {
 }
 ```
 
+#### TypeScript
+
+```ts
+function maxVacationDays(flights: number[][], days: number[][]): number {
+    const n = flights.length;
+    const K = days[0].length;
+    const inf = Number.NEGATIVE_INFINITY;
+    const f: number[][] = Array.from({ length: K + 1 }, () => Array(n).fill(inf));
+    f[0][0] = 0;
+    for (let k = 1; k <= K; k++) {
+        for (let j = 0; j < n; j++) {
+            f[k][j] = f[k - 1][j];
+            for (let i = 0; i < n; i++) {
+                if (flights[i][j]) {
+                    f[k][j] = Math.max(f[k][j], f[k - 1][i]);
+                }
+            }
+            f[k][j] += days[j][k - 1];
+        }
+    }
+    return Math.max(...f[K]);
+}
+```
+
+#### Rust
+
+```rust
+impl Solution {
+    pub fn max_vacation_days(flights: Vec<Vec<i32>>, days: Vec<Vec<i32>>) -> i32 {
+        let n = flights.len();
+        let k = days[0].len();
+        let inf = i32::MIN;
+
+        let mut f = vec![vec![inf; n]; k + 1];
+        f[0][0] = 0;
+
+        for step in 1..=k {
+            for j in 0..n {
+                f[step][j] = f[step - 1][j];
+                for i in 0..n {
+                    if flights[i][j] == 1 {
+                        f[step][j] = f[step][j].max(f[step - 1][i]);
+                    }
+                }
+                f[step][j] += days[j][step - 1];
+            }
+        }
+
+        *f[k].iter().max().unwrap()
+    }
+}
+```
+
 <!-- tabs:end -->
 
 <!-- solution:end -->
diff --git a/solution/0500-0599/0568.Maximum Vacation Days/Solution.rs b/solution/0500-0599/0568.Maximum Vacation Days/Solution.rs
new file mode 100644
index 0000000000000..2483954a7ad16
--- /dev/null
+++ b/solution/0500-0599/0568.Maximum Vacation Days/Solution.rs	
@@ -0,0 +1,24 @@
+impl Solution {
+    pub fn max_vacation_days(flights: Vec<Vec<i32>>, days: Vec<Vec<i32>>) -> i32 {
+        let n = flights.len();
+        let k = days[0].len();
+        let inf = i32::MIN;
+
+        let mut f = vec![vec![inf; n]; k + 1];
+        f[0][0] = 0;
+
+        for step in 1..=k {
+            for j in 0..n {
+                f[step][j] = f[step - 1][j];
+                for i in 0..n {
+                    if flights[i][j] == 1 {
+                        f[step][j] = f[step][j].max(f[step - 1][i]);
+                    }
+                }
+                f[step][j] += days[j][step - 1];
+            }
+        }
+
+        *f[k].iter().max().unwrap()
+    }
+}
diff --git a/solution/0500-0599/0568.Maximum Vacation Days/Solution.ts b/solution/0500-0599/0568.Maximum Vacation Days/Solution.ts
new file mode 100644
index 0000000000000..23f7d25974af5
--- /dev/null
+++ b/solution/0500-0599/0568.Maximum Vacation Days/Solution.ts	
@@ -0,0 +1,19 @@
+function maxVacationDays(flights: number[][], days: number[][]): number {
+    const n = flights.length;
+    const K = days[0].length;
+    const inf = Number.NEGATIVE_INFINITY;
+    const f: number[][] = Array.from({ length: K + 1 }, () => Array(n).fill(inf));
+    f[0][0] = 0;
+    for (let k = 1; k <= K; k++) {
+        for (let j = 0; j < n; j++) {
+            f[k][j] = f[k - 1][j];
+            for (let i = 0; i < n; i++) {
+                if (flights[i][j]) {
+                    f[k][j] = Math.max(f[k][j], f[k - 1][i]);
+                }
+            }
+            f[k][j] += days[j][k - 1];
+        }
+    }
+    return Math.max(...f[K]);
+}