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

написать программу с графом - C++

Восстановить пароль Регистрация
 
Alexandri
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 46
23.04.2013, 09:24     написать программу с графом #1
В клубе N человек. Многие из них - друзья. Так же
известно, что друзья друзей так же являются друзьями. Требуется выяснить, сколько
всего друзей у конкретного человека в клубе.
Входные данные
В первой строке входного файла INPUT.TXT заданы два числа: N и S (1 <= N
<= 100; 1 <= S <= N), где N - количество человек в клубе, а S – номер конкретного
человека. В следующих N строках записано по N чисел - матрица смежности,
состоящая из единиц и нулей. Причем единица, стоящая в i-й строке и j-м столбце
гарантирует, что люди с номерами i и j – друзья, а 0 – выражает неопределенность.
Выходные данные
В выходной файл OUTPUT.TXT выведите количество гарантированных
друзей у человека с номером S, помня о транзитивности дружбы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
23.04.2013, 12:26     написать программу с графом #2
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
#include <string>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main()
{
    // read input data
    ifstream inp("input.txt");
    int n, s;
    inp >> n >> s;
    vector<vector<int> > m(n, vector<int>(n));
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            inp >> m[i][j];
        }
    }
 
    // make symmetric
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (m[i][j])
                m[j][i] = 1;
        }
    }
 
    // transitive closure
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (m[i][j]) {
                for (int k = 0; k < n; ++k) {
                    if (m[j][k])
                        m[i][k] = 1;
                }
            }
        }
    }
 
    // count friends
    int count = 0;
    for (int i = 0; i < n; ++i) {
        if (m[s - 1][i])
            count++;
    }
 
    // write result
    ofstream out("output.txt");
    out << count;
}
Цитата Сообщение от input.txt
5
2
0 1 0 1 0
1 0 0 0 0
0 0 0 0 1
0 1 0 0 0
0 0 0 0 0
Цитата Сообщение от output.txt
3
Alexandri
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 46
23.04.2013, 22:20  [ТС]     написать программу с графом #3
программа не работает, я не могу понять почему
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
23.04.2013, 22:28     написать программу с графом #4
Цитата Сообщение от Alexandri Посмотреть сообщение
программа не работает, я не могу понять почему
На каком конкретно input.txt не работает?
Alexandri
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 46
23.04.2013, 22:55  [ТС]     написать программу с графом #5
начала с вашего примера, открывает консольное окно и ничего не выводит, кроме "Для продолжения..."
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
24.04.2013, 00:01     написать программу с графом #6
Цитата Сообщение от Alexandri Посмотреть сообщение
открывает консольное окно и ничего не выводит
Все правильно:

Цитата Сообщение от Alexandri Посмотреть сообщение
Входные данные
В первой строке входного файла INPUT.TXT...
Выходные данные
В выходной файл OUTPUT.TXT выведите...
Зачем что-то на экран выводить?
Alexandri
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 46
24.04.2013, 00:51  [ТС]     написать программу с графом #7
что то я протупила конкретно хD
я извиняюсь))

Добавлено через 18 секунд
все работает, спасибо вам большое)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2013, 22:57     написать программу с графом
Еще ссылки по теме:

C++ написать прогу с графом
C++ Написать программу
C++ Алгоритм поиска пути в лабиринте, заданном связным графом

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

Или воспользуйтесь поиском по форуму:
Alexandri
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 46
29.04.2013, 22:57  [ТС]     написать программу с графом #8
наконец то дошла до этой задачи и перерешив у меня наконец то вышло все правильно))
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
#include<iostream>
 
using namespace std;
 
int main()
{
    freopen("input.txt","r",stdin);
    int T[100][100],N,S;
    cin>>N>>S;
    for(int i=0; i<N;i++)
{
for(int j=0;j<N;j++)
{
cin>>T[i][j]; 
}
}
    for(int i=0; i<N;i++)
{
    for(int j=0;j<N;j++)
{
cout<<T[i][j]<<" ";
}
cout<<endl;
}
 
    //count friends
    int count=0;
     for (int i = 0; i < N; i++)
     { 
        for (int j = 0; j < N; j++)
        {
            if (T[i][j]) 
            {
                for (int k = 0; k < N; k++) 
                {
                    if (T[j][k])
                        T[i][k] = 1;
                }
            }
        }
        if (T[S - 1][i])
            count++;
    }
     cout<<""<<count<<endl;
     freopen("output.txt","w",stdout);
 
return 0;
}
Yandex
Объявления
29.04.2013, 22:57     написать программу с графом
Ответ Создать тему
Опции темы

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