Topological sort: Difference between revisions
Content added Content deleted
m (→{{header|C++}}: Minor reorder of operations) |
m (→{{header|C++}}: Renamed variables, for clarity) |
||
Line 686: | Line 686: | ||
{ |
{ |
||
auto const& |
auto const& |
||
goal = lookup.first, |
|||
relations = lookup.second; |
|||
if( |
if(relations.dependencies == 0) |
||
sorted.push_back( |
sorted.push_back(goal); |
||
} |
} |
||
for(std::size_t index = 0; index < sorted.size(); ++index) |
for(std::size_t index = 0; index < sorted.size(); ++index) |
||
for(auto const& |
for(auto const& goal : map[sorted[index]].dependents) |
||
if(--map[ |
if(--map[goal].dependencies == 0) |
||
sorted.push_back( |
sorted.push_back(goal); |
||
for(auto const& lookup : map) |
for(auto const& lookup : map) |
||
{ |
{ |
||
auto const& |
auto const& |
||
goal = lookup.first, |
|||
relations = lookup.second; |
|||
if( |
if(relations.dependencies != 0) |
||
unsortable.push_back( |
unsortable.push_back(goal); |
||
} |
} |
||
} |
} |