1#ifndef MERGE_AND_SHRINK_MERGE_STRATEGY_SCCS_H
2#define MERGE_AND_SHRINK_MERGE_STRATEGY_SCCS_H
4#include "downward/merge_and_shrink/merge_strategy.h"
11namespace merge_and_shrink {
13class MergeTreeFactory;
15class MergeStrategySCCs :
public MergeStrategy {
16 const TaskProxy& task_proxy;
17 std::shared_ptr<MergeTreeFactory> merge_tree_factory;
18 std::shared_ptr<MergeSelector> merge_selector;
19 std::vector<std::vector<int>> non_singleton_cg_sccs;
21 std::unique_ptr<MergeTree> current_merge_tree;
22 std::vector<int> current_ts_indices;
26 const FactoredTransitionSystem& fts,
27 const TaskProxy& task_proxy,
28 const std::shared_ptr<MergeTreeFactory>& merge_tree_factory,
29 const std::shared_ptr<MergeSelector>& merge_selector,
30 std::vector<std::vector<int>>&& non_singleton_cg_sccs);
31 virtual ~MergeStrategySCCs()
override;
32 virtual std::pair<int, int> get_next()
override;