Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QDebug>
- #include <QVector>
- #include <QMap>
- #include <QQueue>
- #include <limits>
- //-----------------------------------------------------------------------------
- //Поиск родителя
- QMap<int, int>::ConstIterator findParent(const QMap<int, int> &map,
- int child){
- QMap<int, int>::ConstIterator parent = map.find(child);
- if(child == *parent){
- return map.end();
- }
- return parent;
- }
- //-----------------------------------------------------------------------------
- //Построение маршрута
- QVector<int> route(const QMap<int, int> &map,
- int start){
- QVector<int> route;
- route.append(start);
- forever{
- QMap<int, int>::ConstIterator parent = findParent(map, route.last());
- if(parent == map.end()){
- break;
- }
- route.append(*parent);
- };
- return route;
- }
- //------------------------------------------------------------------------------
- //Построение маршрутов
- QVector<QVector<int> > routes(const QMap<int, int> &map){
- QVector<QVector<int> > routes;
- QMap<int, int>::ConstIterator begin = map.begin();
- QMap<int, int>::ConstIterator end = map.end();
- for(; begin != end; ++begin){
- routes.append(route(map, begin.key()));
- }
- return routes;
- }
- //------------------------------------------------------------------------------
- int main(int, char *[]){
- QMap<int, int> m;
- m[0] = 0;
- m[1] = 0;
- m[2] = 3;
- m[3] = 1;
- m[4] = 1;
- qDebug() << routes(m);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement