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

Граф - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ vc++2008 ошибка cmath(21) : error C2039: 'acosf' : is not a member of '`global namespace'' http://www.cyberforum.ru/cpp-beginners/thread256586.html
Использую math.h При компиляции выдает : cmath(21) : error C2039: 'acosf' : is not a member of '`global namespace'' 1>D:\Microsoft Visual Studio 9.0\VC\include\cmath(21) : error C2873: 'acosf' :...
C++ Класс-Контейнер Вектор I Дана последовательность целых чисел Подсчитать сумму элиментов, расположенных между минимальным и максимальным элементами (минимальный и максимальный элемент в массиве единственные). Если... http://www.cyberforum.ru/cpp-beginners/thread256563.html
vs2010+дебаггер+имена функций C++
где в дебаггере в vs2010 посмотреть имена функций?(имеются перегруженные, нужно для примера)
C++ Строки и символы в С++
Даны положительные числа n1 и n2 и строки s1 и s2. Получить из этих строк новую строку, содержащую первые n1 символов строки s1 и последние n2 символов строки s2
C++ Как определить размер класса ? http://www.cyberforum.ru/cpp-beginners/thread256542.html
Вот есть у меня класс, каким образом определить его размер в битах ?
C++ Выход из программы Доброго времени суток, это опять я:) Дописал программу, которая вычисляет произведение матрицы на вектор. Фишка программы заключается в написании собственных функций для вычисления произведения... подробнее

Показать сообщение отдельно
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.03.2011, 19:31
нет, нужно применить алгоритм Дейкстры с начальной вершины, а затем сравнить значения в каждой вершине со значением заданой длинны

Добавлено через 43 минуты
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
#include <iostream>
#include <vector>
#include <queue>
#include <numeric>
 
int main()
{
   std::locale::global(std::locale(""));
   std::cout << "Введите начальную вершину: " << std::endl;
   int start;
   std::cin  >> start;
   std::cout << "Введите количeство вершин: " << std::endl;
   int n;
   std::cin  >> n;
   int length;
   std::cout << "Введите нужную длинну пути: " << std::endl;
   std::cin  >> length;
   std::cout << "Введите матрицу размером "  
             << n << "x" << n << ":" 
             << std::endl;
   std::vector <std::vector <int> > g(n, std::vector<int>(n, 0));
   for (size_t i = 0; i < n; i++)
      for (size_t j = 0; j < n; j++)
            std::cin >> g[i][j];
   
   const int infinity = std::numeric_limits<int>::max();
   std::vector <int>  d(n, infinity);
   d[start-1] = 0;
   std::queue <int> bfs;
   bfs.push(start-1);
   while (!bfs.empty())
   {
      int now = bfs.front();
      bfs.pop();
      for (size_t i = 0; i < n; i++)
            if (g[now][i] != 0 && d[now] + g[now][i] < d[i])
            {
                        d[i] = d[now] + g[now][i];
                        bfs.push(i);
            }
   }
   std::cout << "Следующие вершины расположеные за " 
             << length 
             << "\nот вершины " 
             << start << ":"
             << std::endl;
 
   for (size_t i = 0; i < n; i++)
      if (d[i] == length) 
            std::cout << i+1 << " ";
   std::cout << std::endl;
 
   return 0;
}
вот код, который подходит как для неориентированого графа так и для орграфа.
Граф задает матрица, путь находит алгоритм Дейкстры через явно заданую очередь


Добавлено через 46 минут
nas, все так как нужно?
Может что-то переделать, чем-то помочь?
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru