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

Поиск в ширину - Неправильно выполняется программа - C++

Восстановить пароль Регистрация
 
zubi
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 8
21.08.2014, 20:58     Поиск в ширину - Неправильно выполняется программа #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
#include<iostream>
#include<stdio.h>
#include<queue>
 
using namespace std;
 
 
int main(){
    freopen("open","r",stdin);
        int n,s;
    int g[111][111];
     cin>>n>>s;
    for(int i = 0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>g[i][j];
    queue<int> q;
q.push (s);
vector<bool> used (n);
vector<int> d (n), p (n);
used[s] = true;
p[s] = -1;
while (!q.empty()) {
    int v = q.front();
    q.pop();
    for (size_t i=0; i<n; ++i) {
        int to = g[v][i];
        if (!used[to]) {
            used[to] = true;
            q.push (to);
            d[to] = d[v] + 1;
            p[to] = v;
        }
    }
}
    for(int i=0;i<n;i++)
        cout<<d[i]<<" ";
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 20:58     Поиск в ширину - Неправильно выполняется программа
Посмотрите здесь:

C++ поиск в ширину
C++ Поиск в ширину
C++ Поиск в ширину на графе
C++ Неправильно выполняется формула в цикле
C++ графы. поиск в ширину
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
21.08.2014, 21:09     Поиск в ширину - Неправильно выполняется программа #2
Экстрасенсы сейчас на битве.
Что она должна делать и что делает?
И неплохо бы ещё тэги [СPP][/СPP] использовать.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
21.08.2014, 21:40     Поиск в ширину - Неправильно выполняется программа #3
А пока экстрасенсы на битве, можете спросить у Великого Компилятора. Если он молчит - изъясните сами, пожалуйста, почему она неправильно работает и как правильно? А то Вы путаете магов и программистов...
zubi
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 8
21.08.2014, 22:54  [ТС]     Поиск в ширину - Неправильно выполняется программа #4
это поиск в ширину . но она неправильно выдает ответ . то есть дистанцию от верщины S до доругих
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
22.08.2014, 07:18     Поиск в ширину - Неправильно выполняется программа #5
массивы надо инициализировать до запуска while-а.
Fallenworld
75 / 75 / 9
Регистрация: 14.04.2014
Сообщений: 408
22.08.2014, 09:10     Поиск в ширину - Неправильно выполняется программа #6
Однобуквенные переменные...
Хорошая программа не должна требовать комментариев, чтобы понять, что в ней происходит.
Но к этой требуются.
Из того, что возможно является причиной undefined behaviour
C++
1
for (size_t i=0; i<n; ++i)
сравнение int и site_t
C++
1
int to = g[v][i];
тоже самое, size_t приводится к инт
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2014, 11:21     Поиск в ширину - Неправильно выполняется программа
Еще ссылки по теме:

Поиск в ширину C++
C++ Неправильно выполняется цикл do while
Программа работает неправильно. Цикл не выполняется. Подскажите ошибку C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DieMore
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 11:21     Поиск в ширину - Неправильно выполняется программа #7
Подправил, вроде работает.
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
#include<iostream>
#include<stdio.h>
#include<queue>
 
using namespace std;
 
const int inf = (int)1e9;
 
 
int main(){
    //freopen("open","r",stdin);
        int n,s;
    int g[111][111];
    cin>>n>>s;
    for(int i = 0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>g[i][j];
    queue<int> q;
    q.push (s);
    vector<bool> used (n);
    vector<int> d (n,inf), p (n);
    used[s] = true;
    p[s] = -1;
    d[s] = 0;
while (!q.empty()) {
    int v = q.front();
    q.pop();
    for (size_t i=0; i<n; ++i) {
 
        if (g[v][i] && d[i] > d[v] + 1) {
            q.push (i);
            d[i] = d[v] + 1;
            p[i] = v;
        }
    }
}
    for(int i=0;i<n;i++)
        cout<<d[i]<<" ";
    return 0;
}
Вы ,видимо, решаете какую-то задачу? Или как?
Yandex
Объявления
22.08.2014, 11:21     Поиск в ширину - Неправильно выполняется программа
Ответ Создать тему
Опции темы

Текущее время: 17:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru