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

Разобрать код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ вывод на экран (выводит числа из файла округленными) http://www.cyberforum.ru/cpp-beginners/thread728717.html
Программа выводит на экран числа из файла, так что числа стоящие на нечетных местах выводятся с одним знаком после запятой, а четных с двумя. Всё работает, но выводятся округлённые числа(соответственно с одним или двумя знаками). Объясните где в программе округление и как его убрать)) построчно вроде разобрал, округления так и не нашёл. спс заранее)) #include "stdafx.h" #include <iostream>...
C++ Ошибка: слишком много включаемых файлов Народ подскажите что могло случится с Microsoft Visual C++ 2010 экспресс выпуск. До этого как установил всё нормально работал и компилировал программы, а теперь не хочет даже рабочие программы компилировать, вот такая ошибка: math.h(10): fatal error C1014: слишком много включаемых файлов: глубина = 1024 запись инклуда в начале: #include<math.h> вот к примеру программа целиком: Задача:... http://www.cyberforum.ru/cpp-beginners/thread728716.html
C++ В двухмерном массиве целых чисел поменять местами строки, симметричные относительно середины массива
В двухмерном массиве целых чисел поменять местами строки, симметричные относительно середины массива (горизонтальной линии)
C++ Ошибка
Выбивает вот такую ошибку... 2 C:\Dev-Cpp\include\c++\backward\backward_warning.h:32 #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>....
C++ Не понимаю, почему не работает стандартная функция strlen http://www.cyberforum.ru/cpp-beginners/thread728668.html
#include "stdafx.h" #include <iostream> #include "string.h" using namespace std; int _tmain(int argc, _TCHAR* argv) { char str = "helloworld"; cout<< strlen(str);
C++ Строковый массив (описание, инициализация, передача в функции) Здравствуйте! Простите за настолько банальный вопрос, но никак не могу разобраться со строковыми массивами. Что интересует: 1) Описание массива (если будет не лень, хотелось бы увидеть несколько возможных вариантов) 2) Инициализация массива (как заполнить его значениями (при моих попытках строка инициализировалась только до первого пробела)) 3) Передача массива в функции (т.е., к... подробнее

Показать сообщение отдельно
краб
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 52
12.12.2012, 11:42     Разобрать код
Дан ориентированный взвешенный граф. Требуется найти минимальные расстояния от вершины S до всех остальных вершин.
Вход:
В первой строке через пробел записаны два натуральных числа N и S (S <= N < 103), где N – число вершин графа (нумерация вершин от 1 до N). В следующих N строках записана матрица смежности графа (формат ввода смотрите в примере). Веса ребер – натуральные числа, не превосходящие 106. Если какого-либо ребра нет, то соответствующий ему элемент матрицы равен -1. На главной диагонали стоят нули. Строки матрицы соответствуют вершинам, из которых направлены ребра.
Выход:
В первых N строках выведите по одному числу –минимальному расстоянию из вершины S в соответствующую вершину. Если пути из вершины S в какую-либо вершину не существует, то в соответствующей строке выведите -1.
***решение*/
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
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int g[150][150];//граф
 
bool u[150];//массив помечена вершина еще или нет
 
int d[150];//кратчайший путь из s в вершины
 
const int inf = 1000000000;//бесконечность
 
int main()
{
 
    int n, s;
    cin >> n >> s;
    s--;//так как с нуля 
    for (int i = 0; i < n; i++)
         for (int j = 0; j < n; j++)
             cin >> g[i][j]; //считывание графа
    for (int i = 0; i < n; i++)
        d[i] = inf;
    d[s] = 0;
    for (int i = 0; i < n; i++)
        {
            int v=-1;//непомеченная вершина v с наименьшей величиной
            for (int j = 0; j < n; j++)
                 if (!u[j])
                      if (v == -1 || d[j] < d[v])
                           v = j; //нахождение вершины с минимальной меткой
             u[v] = true;//вершина помечена
             for (int j = 0; j < n; j++)
                  if (g[v][j] != -1 && i!=j)//если вес не равен -1 и i не равно j то выполняеться
                      d[j] = min(d[v] + g[v][j], d[j]);//релаксации через эту вершину
         }
    for (int i = 0; i < n; i++)
         if (d[i] == inf)//если путь равен бескончности 
             cout << -1 << ' ';//вывести -1
          else
             cout << d[i] << ' ';//вывод ответа
    system("pause");
return 0;
 
}
я нашел код он работает разобрал,но не могу понять как он считает когда вводим больше 3 вершин ,кратчайшие пути ,помогите .Обьясните как он считает кратчайшие пути после воода 4 и более вершин
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru