Форум программистов, компьютерный форум CyberForum.ru

Работа с графами. Алгоритм Дейкстры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread830139.html
Программа не выходит из данного цикла(например, если массив comp из чисел 1 1 5 5 5, то все равно пишет KARE) for(int a=0, b=1, c=2, d=3; c<5; d++) { if(d==a||d==b||d==c) continue; if(comp==comp&&comp==comp&&comp==comp) { cout<<"KARE"; intel=intel=intel=intel=false; kare=true; break;
C++ Вывести на экран символ ASCII таблицы заданное количество раз Всем привет. надо вывести на экран символ аски таблицы такое кол во раз, какое значение хранится в поле структуры. чето меня переклинило. ну или просто как вывести символ на экран указанное кол во раз.void myClass::show() { int l=219; ptek=pbeg; while(ptek->next) { cout<<ptek->a<<" "<<ptek->b<<endl; ptek=ptek->next; } http://www.cyberforum.ru/cpp-beginners/thread830108.html
Как написать плеер для Windows ? C++
Посоветуйте какие-то книги стати советы. Правильно ли я понимаю что: - с помощью кодеков декодируется видео и аудио, но что они выдают на выход? - и что такое сами кодеки? это COM-объекты? или что это и как с ними взаимодействовать в программе? - чем, после декодирования, видео и аудио рендертися на экран с помощю DirectX или ещё чего-то? Если можно перечислите какие минимальные знания...
Переменная базового класса в производных классах C++
Есть абстрактный базовый класс и в нем определена переменная variable: class Base { public: int variable; }; И есть два производных класса, которые используют переменную базового класса variable:
C++ Конструкторы http://www.cyberforum.ru/cpp-beginners/thread830076.html
Пытаюсь разработайте класс представления окна на экране компьютера. В состав должны войти следующие конструкторы: -конструктор по умолчанию; -конструктор с параметрами; -копирующий конструктор. #include <iostream.h> #include <conio.h> #include <stdio.h> class my {int x1,x2,y1,y2,col; public:
C++ «Моделирование процессов преобразования информации в сопроцессоре» Необходимо реализовать программу, выполняющую конверсию введенного с клавиатуры десятичного числа с плавающей точкой в формат сопроцессора и обратное преобразование (вводится двоичное представление, программа выдает соответствующее десятичное число). Ввод осуществляется с клавиатуры, вывод на экран. Программа должна поддерживать все три типа данных сопроцессора. подробнее

Показать сообщение отдельно
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.04.2013, 03:55     Работа с графами. Алгоритм Дейкстры
Элементарно же переписывается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <map>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <limits>
#include <iterator>
#include <string>
#include <utility>
#include <iostream>
#include <bitset>
#include <numeric>
#include <iomanip>
#include <stack>
#include <set>
 
#ifdef ACMP_DEBUG
 
    #include <iostream>
    auto& in = std::cin;
    auto& out = std::cout;
 
#else
 
    #include <fstream>
    std::ifstream in("INPUT.TXT");
    std::ofstream out("OUTPUT.TXT");
 
#endif // ACMP_DEBUG
 
typedef std::size_t distance_t;
typedef std::size_t vertex_t;
 
std::pair<distance_t, vertex_t> my_make_pair
(
    const distance_t&   d,
    const vertex_t&     v
)
{
    return std::make_pair(d, v);
}
 
typedef std::set<std::pair<distance_t, vertex_t> > sorted_queue_t;
 
int main()
{
    static const distance_t INF = static_cast<distance_t>(-1);
 
    std::size_t m;
    vertex_t from, to;
    in >> m >> from >> to;
    --from;
    --to;
 
    // std::vector<std::vector<std::size_t> > g(m);
 
    typedef std::vector<std::vector<std::pair<distance_t, vertex_t> > > Graph_t;
    Graph_t g(m);
    for(std::size_t i = 0; i < m; ++i)
    {
        // g.at(i).resize(m);
        // for(std::size_t j = 0; j < g.at(i).size(); ++j)
        //     in >> g.at(i).at(j);
        for(std::size_t j = 0; j < m; ++j)
        {
            distance_t d;
            in >> d;
            if(d != static_cast<distance_t>(-1))
                g.at(i).push_back(my_make_pair(d, j));
        }
    }
 
    std::vector<distance_t> d(m, INF);
    d.at(from) = 0;
 
    sorted_queue_t q;
    q.insert(my_make_pair(d.at(from), from));
 
    while(!q.empty())
    {
        vertex_t v = q.begin() -> second;
        q.erase(q.begin());
 
        // for(vertex_t to_c = 0; to_c < g.at(v).size(); ++to_c)
        for
        (
            Graph_t::value_type::iterator it = g.at(v).begin();
            it != g.at(v).end();
            ++it
        )
        {
            vertex_t to_c = it -> second;
            // distance_t len = static_cast<distance_t>(g.at(v).at(to_c));
            distance_t len = it -> first;
            if(len == INF)
                continue;
            // std::cout << "Before if: v: " << v << ", to_c: " << to_c << std::endl;
            // std::cout << "d.at(v) + len: " << d.at(v) + len << std::endl;
            // std::cout << "d.at(to_c): " << d.at(to_c) << std::endl << std::endl;
            if(d.at(v) + len < d.at(to_c))
            {
                // std::cout << "v: " << v << ", to_c: " << to_c << std::endl;
                // std::cout << (d.at(v) + len) << " < " << d.at(to_c) << std::endl;
 
                q.erase(my_make_pair(d.at(to_c), to_c));
                d.at(to_c) = d.at(v) + len;
                q.insert(my_make_pair(d.at(to_c), to_c));
 
                // std::cout << "Is q empty? " << q.empty() << std::endl;
            }
        }
    }
 
    if(d.at(to) == INF)
        out << -1;
    else
        out << d.at(to);
    out << std::endl;
 
    return 0;
}
Задача
 
Текущее время: 11:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru