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

поиск логической ошибки - C++

Восстановить пароль Регистрация
 
hastam
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 12
13.10.2011, 23:14     поиск логической ошибки #1
Народ помогите плиз найти ошибку в коде. Препод нашел и сказал исправить.
задача такая:
На посвящение в студенты собрались все первокурсники. Некоторые из них знают друг друга. Считается, что два незнакомых человека тоже друзья, если у них есть какой-нибудь общий друг. Группа студентов, которые больше ни с кем не знакомы, называется "тусовкой". Студенты из различных "тусовок" не имеют общих знакомых. Необходимо узнать, сколько всего существует "тусовок".
Формат входного файла:
В первой строке входного файла INPUT.TXT записано целое число N - количество первокурсников. Во второй строке входного файла INPUT.TXT записано целое число K - количество известных непосредственных знакомств. Далее в следующих K строках записано по паре целых чисел Ai и Bi через один пробел, означающих, что первокурсники с номерами Ai и Bi знакомы непосредственно. Ограничения на значения: 1≤N≤1000, 0≤K≤1000000, 1≤Ai≤N, 1≤Bi≤N, i=1..N. Гарантируется, что для предложенного набора данных результат всегда существует. Каждая строка заканчивается переходом на новую строку.
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
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
 
bool mass[1000][1000];
bool mass2[1000];
 
int main()
{   
    queue<int> myqueue;
    int N,k;
    int buf,buf2,count=0;
    ifstream fin("input.txt");
    fin>>N;
    fin>>k;
 
    for(int i=0; i<k;i++)
    {
        fin>>buf;
        fin>>buf2;
        if(buf==buf2&&i==0)count=1;
        mass[buf-1][buf2-1]=1;
        if(myqueue.empty())
        {
            myqueue.push(buf);
            mass2[buf-1]=true;
        }
        mass[buf2-1][buf-1]=true;
    }
    
    fin.close();
    ofstream fout("output.txt");
    for(int i=0; i<N; i++)
    {
        if(mass2[i]==false)
        {myqueue.push(i+1);
        while(!myqueue.empty())
    {   
        buf=myqueue.front();
        myqueue.pop();
        for(int j=0; j<N; j++)
        {
            if(mass[buf-1][j]==true)
            {
                myqueue.push(j+1);
                mass[buf-1][j]=false;
                mass[j][buf-1]=false;
                mass2[j]=true;
            }
        }   
    }
    count++;
        }
    }
    fout<<count;
    fout.close();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 23:14     поиск логической ошибки
Посмотрите здесь:

C++ Поиск ошибки в коде
C++ Поиск ошибки
C++ Поиск ошибки.
C++ Поиск ошибки в программе.
C++ Поиск ошибки.
C++ Поиск ошибки
Поиск ошибки в fread C++
C++ Поиск ошибки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.10.2011, 01:01     поиск логической ошибки #2
hastam,
Контрпример:
4
1
2 3
Yandex
Объявления
14.10.2011, 01:01     поиск логической ошибки
Ответ Создать тему
Опции темы

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