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

Радиус после удаления висячих вершин - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ error C2064: выдает ошибку http://www.cyberforum.ru/cpp-beginners/thread123150.html
#include <iostream> #include <stdlib.h> #include <math.h> #include<clocale> using namespace std; // поиск мах int max (int *mass, int i,int n) { int m;
C++ Почему не работает? создаю прогу, которая использует родовые функции. Вот написал код, когда две команды, которые я закоментировал закоментированы, то прога работает отлично, но когда я пробую работать с чаровским типом данных, тоесть раскоментировать первые коментарии, то мне выдает ошыбку, тоесть функция не хочет принимать мох передаваемые значения... как ето можно исправить? #include <iostream.h> #include... http://www.cyberforum.ru/cpp-beginners/thread123148.html
C++ параллельное выполнение
приветствую вас. есть проблема.. написал программку в c builder. Там есть цикл, который крутит выполнение некоторых операций - сканирует порты и выводит результат в окошко. Как сделать ток, чтоб эти операции выполнялись параллельно? чтоб не занимало так долго времени ожидания...
C++ Out of memory
Недавно решил освоить графику в с++, и при прорисовке изображения на канве заметил, что оно занимает память. По таймеру каждые 100 миллисекунд отрисовываю на канве новое изображение, при этом отрисовка кушает достаточно много памяти. Как выгрузить из памяти весь этот мусор? Тоесть стереть старое уже не нужное изображение. Пытался через imgMain->Canvas->Refresh();...
C++ Использование массивов в функциях.C++ http://www.cyberforum.ru/cpp-beginners/thread123089.html
1. Составить программу, которая определяет количество положительных элементов до последнего нулевого элемента и количество отрицательных после него в массивах Y(N) и X(M). Вычисление количества элементов оформить в виде функции. 2. Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять...
C++ Сортировка массива Помогите пожалуйста отсортировать одномерный массив по возрастанию. Очень нужно. Где ни искал, нигде не нашел ни одного примера(( подробнее

Показать сообщение отдельно
Spring
Сообщений: n/a
28.04.2010, 18:48     Радиус после удаления висячих вершин
Необходимо найти радиус графа после удаления висячих вершин. Не могу найти ошибку. Результат всегда выдается либо 10000,либо 1010 почему-то))

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
#include <fstream>
 
using namespace std;
 
const int Infinity = 10000; // бесконечность
const int Nmax = 100; // максимальное количество вершин графа
int W[Nmax][Nmax];
int n;
 
// Алгоритм Флойда - Уоршелла
void Floyd_Warshall()
{
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                W[i][j] = min(W[i][j], W[i][k] + W[k][j]);
}
 
// решение задачи
int Solve()
{
    Floyd_Warshall();
    int ecc, rad = Infinity;
    bool f;
    for (int i = 0; i < n; i++)
    {
        ecc = 0;
        f = false;
        for (int j = 0; j < n; j++)
        {
            if (i == j) continue;
            if ((ecc < W[i][j]) && (W[i][j] < Infinity)) 
            {
                ecc = W[i][j];
                f = true;
            }
        }
        if (!f) continue;
        if (rad > ecc) rad = ecc;
    }
    return rad;
}
 
// считываем граф, удаляем висячие вершины и заполняем матрицу W
void Read_And_Init()
{
    ifstream ifs;
    int M[Nmax][Nmax]; // матрица смежности
    ifs.open("input.txt");
    ifs >> n;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            ifs >> M[i][j];
    ifs.close();
 
    // удаляем висячие вершины.
    int q, k;
    for (int i = 0; i < n; i++)
    {
        q = 0;
        for (int j = 0; j < n; j++)
            if (M[i][j] > 0) 
            {
                k = j;
                q++;
            }
        if (q == 1)
        {
            M[i][k] = 0;
            M[k][i] = 0;
        }
    }
 
    // записывам в матрицу W длины ребер
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (i == j)
                W[i][j] = 0;
            else 
                if (M[i][j] > 0)
                    W[i][j] = M[i][j];
                else
                    W[i][j] = Infinity;
}
 
void Print(int R)
{
    ofstream ofs;
    ofs.open("output.txt");
    ofs << R;
    ofs.close();
}
            
int main()
{
    int R;
    Read_And_Init();
    R = Solve();
    Print(R);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru