The k-forest problem is a common generalization of both the k-MST and the dense-k-subgraph problems. Formally, given a metric space on n vertices V , with m demand pairs ⊆ V × V and a “target” k ≤ m, the goal is to find a minimum cost subgraph that connects at least k demand pairs. In this paper, we give an O(min{ √ n, √ k})-approximation algorithm for k-forest, improving on the previous best ratio of O(min{n2/3 , √ m} log n) by Segev and Segev [SS06]. We then apply our algorithm for k-forest to obtain approximation algorithms for several Dial-a-Ride problems. The basic Dial-a-Ride problem is the following: given an n point metric space with m objects each with its own source and destination, and a vehicle capable of carrying at most k objects at any time, find the minimum length tour that uses this vehicle to move each object from its source to destination. We want that the tour be non-preemptive: i.e., each object, once picked up at its source, is dropped only at it...