pub fn customize<'c, Graph>(cch: &'c CCH, metric: &Graph) -> Customized<'c, CCH>
where
    Graph: LinkIterGraph + EdgeRandomAccessGraph<Link> + Sync,
{
    let m = cch.num_arcs();
    // buffers for the customized weights
    let mut upward_weights = vec![INFINITY; m];
    let mut downward_weights = vec![INFINITY; m];

    // respecting phase
    // copy metric weights to their respective edges in the CCH
    prepare_weights(cch, &mut upward_weights, &mut downward_weights, metric);

    customize_basic(cch, upward_weights, downward_weights)
}
/// Execute second phase, that is metric dependent preprocessing.
/// `metric` has to have the same topology as the original graph used for first phase preprocessing.
/// The weights of `metric` should be the ones that the cch should be customized with.
///
/// GOTCHA: When the original graph has parallel edges, the respecting phase may not necessarily use the best.
/// This may lead to wrong query results.
Execute second phase, that is metric dependent preprocessing.
`metric` has to have the same topology as the original graph used for first phase preprocessing.
The weights of `metric` should be the ones that the cch should be customized with.

When the original graph has parallel edges, the respecting phase may not necessarily use the best.
This may lead to wrong query results.
Execute second phase that is metric dependent preprocessing . ` metric ` has to have the same topology as the original graph used for first phase preprocessing . The weights of ` metric ` should be the ones that the cch should be customized with . When the original graph has parallel edges the respecting phase may not necessarily use the best . This may lead to wrong query results .
pub fn customize<'c, Graph>(cch: &'c CCH, metric: &Graph) -> Customized<'c, CCH>
where
    Graph: LinkIterGraph + EdgeRandomAccessGraph<Link> + Sync,
{
    let m = cch.num_arcs();
    // buffers for the customized weights
    let mut upward_weights = vec![INFINITY; m];
    let mut downward_weights = vec![INFINITY; m];
    // respecting phase
    // copy metric weights to their respective edges in the CCH
    prepare_weights(cch, &mut upward_weights, &mut downward_weights, metric);
    customize_basic(cch, upward_weights, downward_weights)
}
pub fn customize < ' c , Graph > ( cch : & ' c CCH , metric : & Graph ) -> Customized < ' c , CCH > where Graph : LinkIterGraph + EdgeRandomAccessGraph < Link > + Sync , { let m = cch . num_arcs ( ) ; // buffers for the customized weights let mut upward_weights = vec ! [ INFINITY m ] ; let mut downward_weights = vec ! [ INFINITY m ] ; // respecting phase // copy metric weights to their respective edges in the CCH prepare_weights ( cch , & mut upward_weights , & mut downward_weights , metric ) ; customize_basic ( cch , upward_weights , downward_weights ) }
Execute second phase, that is metric dependent preprocessing.
Execute second phase that is metric dependent preprocessing .
cch
&'c CCH
metric
&Graph
cch
&'c CCH
metric
&Graph