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

Правильно ли указано хранение графа в массиве списков? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как заполнить структуру в цикле http://www.cyberforum.ru/cpp-beginners/thread1186106.html
Добрый день, как можно заполнить структуру с помощью цикла while или do while То есть в структуре есть 4 члена: 1. Имя работника 2. Фамилия работника 3. Должность работника. 4. Заработная плата работника Всего 10 работников. Как можно реализовать ввод информации по каждому работнику и при заполнении информации на 10 работников, выйти из цикла.
C++ Области видимости функций Добрый день. Написал класс, помогите найти ошибки #include <iostream> #include <string> #include <vector> using namespace std; struct FIO { http://www.cyberforum.ru/cpp-beginners/thread1186100.html
C++ Курсовая. Методы оптимизации
http://www.cyberforum.ru/attachments/402404d1400795723 Помогите чем сможете Заранее спасибо
C++ Напечатать минимальное число, больше 500, которое нацело делится на 47
Сделалано в DEV C++,нужно переделать в NetBeans IDE 2)задание: Напечатать минимальное число, больше 500, которое нацело делится на 47. #include <iostream> using namespace std; int main() { long int x;
C++ Определить, на какую цифру, чётную или нечётную, оканчивается число http://www.cyberforum.ru/cpp-beginners/thread1186085.html
Сделалано в DEV C++,нужно переделать в NetBeans IDE 1)задание: Дано натуральное число. Определить на какую цифру чётную или нечётную оканчивается число. #include <iostream> using namespace std; int main() { long int x; int n;
C++ Потеря нулевых байт при архивации (алгоритм Хаффмана) Неправильно архивирует pdf файлы Как мне сказали вся ошибка в функции BuildTable "Вместо условия проверки отсутствия символа, лучше сделать проверку ссылок обоих дочерних элементов на равенство NULL (в этом случае это будет конец ветки дерева). А если проверят на отсутствия символа условие if('\0') даст false и не пройдет, в итоге нулевой символ пропадет из кодовой таблицы. " Не могли бы... подробнее

Показать сообщение отдельно
icpu
 Аватар для icpu
276 / 181 / 36
Регистрация: 10.03.2011
Сообщений: 863
Записей в блоге: 2
24.05.2014, 22:18     Правильно ли указано хранение графа в массиве списков?
Qazan, он работает корректно, но усложняется поиск смежных вершин. Для одних мы просматриваем индексы map, для других ищем во всех индексах по set'ам. Можно рёбра хранить просто в виде структуры в одном set'е, а для поиска определить функцию, по которой отбирать из сета вершины.
C++
1
2
3
4
5
6
7
8
9
class mpair {
int a; int b; 
bool coll(int i) {return i==a||i==b;}
};
std::set <mpair> para;
 
for (auto i = para.begin(); i != para.end(); i++)
    if (i->coll(something))
        actions();
Не стоит заморачиваться, если не стоит задача снизить потребление памяти на 15%.

С другой стороны, если интересует чисто упрощение записи файла, можно при считывании запоминать симметричные позиции,
а для отсечения уже существующих и подсчёта общего их числа можно поставить предусловие
C++
1
2
3
4
5
6
7
if ( s.find(a) != s.end() )
{
n++;
s[min(a,b)].insert(max(a,b));
if (a != b)
s[max(a,b)].insert(min(a,b));
}
 
Текущее время: 01:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru