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

Работа с Ориентированным графом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как мне написать батник http://www.cyberforum.ru/cpp-beginners/thread514090.html
Здравствуйте, начал изучать c++, но сама структура IDE мне не нравиться, поэтому я хочу спросить: как мне написать батник, который будет компилировать программу средствами MS Visual Stusio 2010. Если кого-то не затруднит - просто дайте батник и Makefile. С путями сам как-нибудь разберусь :) Заранее большое спасибо))) Если подобные темы уже были - ткните носом, поиск не помог)
C++ Вопросы по типу char Читаю книгу Страуструпа. Дошёл до типа char. В книге приводится такой пример: #include <iostream> int main(){ char c; std::cin >> c; std::cout << "the value of'" << c << "' is " << int(c) << '\n'; } http://www.cyberforum.ru/cpp-beginners/thread514079.html
C++ Ошибки компилятора
Скажем я из своей программы вызываю компилятор с моими параметрами, как узнать какие ошибки он выдал?
C++ C++ клик мышью по координатам
Подскажите как мне кликнуть мышью по координатам. Я отправляю PostMessage(wn,WM_LBUTTONDOWN,0,0) Мне нужно в lParam задать значение координат x = 428; y = 429; как мне это осуществить? напишите пожалуйста полный код, с объявлением x и y, а то я не знаю как лучш их объявить.
C++ Время http://www.cyberforum.ru/cpp-beginners/thread514027.html
Даётся часы и минуты к примеру 12ч 00м и нам надо их перевести на 30 минут назад тоесть будет 11 30 :(
C++ Записать в файл заданного типа суммы элементов каждого столбца исходного файла Помогоите, пожалуйста! как решить эту задачу? Пусть в файле, компонентами которого являются целые числа, первым элементом является размерность квадратной матрицы, а остальные элементы образуют строки этой матрицы. Записать в другой файл того же типа суммы элементов каждого столбца. Использовать только файловые операции. Результат вывести на экран. подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 01:01     Работа с Ориентированным графом
Цитата Сообщение от jhendrix Посмотреть сообщение
можете доделать это до конца, если не трудно.
могу. Только давайте решим вот что. Например есть очередной подграф с вершинами: 2 4 9. В приципе для его хранения нужен массив размером 3*3.
Единственный вопрос что делать с номерами вершин. Сами номера нужно сохранять?

Добавлено через 12 минут
Ну давайте попробуем такой вариант:
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
#include <iostream>
#include <vector>
 #include <fstream>
 #define v_max 100
 using namespace std;
 struct tt{
     int N, mas_num[v_max];
     int S[v_max][v_max];
 };
 
vector<tt> V;
 ifstream in("example.txt");
 
 int n, tmp;
 int m;// кол-во удаленных вершин
 int Q[v_max];// массив будем использовать в качестве очереди
 int i_st, i_end;// переменные для очереди (указывают начало очереди и конец очереди)
 bool mas_del[v_max];// для меток удаленных вершин
 int A[v_max][v_max];
 bool B[v_max][v_max];// аналог матрицы смежности, но если есть путь из вершины 1 в вершину 2, а обратного пути нет, то в этом массиве пометим оба пути (так нужно)
 
 int main()
 {
 int i, j, y;
 in >> n;
 for (i=0; i<n; i++)
         for (j=0; j<n; j++)
         {
                 in >> A[i][j];
                 if(A[i][j])
                 {
                         B[i][j]=B[j][i]=true;// заполняем массив B[][] значениями
                 }
         }
 in >> m;// ввод кол-ва удаленных вершин
 for(i=0; i<m; i++)
 {
         in>>tmp;
         mas_del[tmp]=true;
 }
 for(i=0; i<n; i++)
         if(!mas_del[i])// если вершина не была удалена
         {// здесь будем в mas_del[] помечать также и вершины которые уже вошли в состав какого-либо подграфа
                 mas_del[i]=true;
                 i_st=0; i_end=1; Q[0]=i;
                 while(i_st<i_end)
                 {
                         for(j=0; j<n; j++)
                                 if(B[Q[i_st]][j] && !mas_del[j])
                                 {
                                         mas_del[j]=true;
                                         Q[i_end++]=j;
                                 }
                 }
                 tt temp;
                 temp.N=i_end;
                 for(j=0; j<i_end; j++)
                 {
                     temp.mas_num[j]=Q[j];
                     for(y=0; y<i_end; y++)
                         temp.S[j][y]=A[Q[j]][Q[y]];
                 }
                 V.push_back(temp);                 
         }
    return 0;
}
Т.е. в векторе V каждый элемент представляет из себя подграф. А именно в переменной N хранится значение кол-ва вершин подграфа. В матрице смежности S[][] хранятся данные о связности. В массиве mas_num[] номера вершин (первоначальные номера вершин).
Т.е. например S[2][2] например такой:
0 1
0 0
а массив mas_num[2] такой:
25 46
то это будет означать что в данном подграфе всего две вершины с номерами 25 и 46 и путь есть только из вершины 25 в 46, а обратно нет.
 
Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru