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

Дана матрица инцидентности, вывести множество пар вершин - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где подвох? http://www.cyberforum.ru/cpp-beginners/thread180953.html
Вот код пишет что z необьявлен! #include "stdafx.h" #include <iostream> using namespace std; int zvezda(int z) { cout<<"Enter line size: "; cin>>z; return z; }
C++ Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД Доброго времени суток, форумчане. Прошу у вас помощи с решением задачи Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД и следующими методами: a) ввода и вывода на экран даты; b) по году и порядковому номеру дня в году вычисляющую число и месяц года, соответствующему этому дню; c) находящую в массиве введенных дат самую позднюю. есть пример: Описать класс ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД... http://www.cyberforum.ru/cpp-beginners/thread180952.html
Шифр замены(код Цезаря) C++
Привет всем!!! Шифр замены(код Цезаря) Занумеровать алфавит исходного сообщения. Пусть m-длина алфавита сообщения; n,k-целые числа и НОД(n,m)=1; A,B-коды букв исходного сообщения и шифра соответственно. Тогда B=(A*n+k) mod m и A=(B-k)*n^(-1) mod m. Заранее всем спасибо)))
C++ С помощью метода отражения найти обратную матрицу
С помощью метода отражения найти обратную матрицу. Матрица размара н*н. Прошу помочь алгоритмом, исходником или хорошей книжкой. Хотя бы помогите, пожалуйста, разобраться с прямым ходом, тк обратный ход будет как в методе Гауса. из книг читал Богачева, но мало чего понял...
C++ Функция замены цифр местами http://www.cyberforum.ru/cpp-beginners/thread180932.html
Как разработать функцию, которая меняет в двузначном числе цифры местами, а остальные числа оставляет без изменения
C++ групировка записей Как сгрупировать подрят все записи по фамилиям абонентов и подвести итог общей стоимости их разговоров???????? подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.10.2010, 01:05     Дана матрица инцидентности, вывести множество пар вершин
Ага?

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 <vector>
#include <utility>
 
int main()
{
    const int n=3;
    int Matrix[n][n]={ {1, 1, 0}, {1, 0, 1}, {0, 1, 1} };
std::vector<std::pair<int, int> > VecP;
std::vector<int> Edges;
for(int i=0; i<n; ++i)
{
    int cnt=0, temp;
    for(int j=0; j<n; ++j)
    {
        if(Matrix[i][j]==1)
        {
           if(cnt==0)
              temp=j;
           cnt++;
        }
        if(cnt==2)
        {
            VecP.push_back(std::make_pair<int, int>(temp+1, j+1));
            Edges.push_back(i+1);
            break;
        }
    }
}
std::vector<int>::const_iterator Iter=Edges.begin();
for(std::vector<std::pair<int, int> >::const_iterator It=VecP.begin();
It!=VecP.end(), Iter!=Edges.end();
++It, ++Iter)
{
    std::cout<<It->first<<'-'<<It->second<<' '<<*Iter<<'\n';
}
return 0;
}
Добавлено через 25 минут
Хотя пожалуй так можно избежать лишних проверок уникальности вершин в ребрах.

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
#include <iostream>
#include <vector>
#include <utility>
#include <set>
 
int main()
{
    const int n=3;
    int Matrix[n][n]={ {1, 1, 0}, {1, 0, 1}, {0, 1, 1} };
    std::set<std::pair<int, int> > VecP;
    std::vector<int> Edges;
    for(int i=0; i<n; ++i)
    {
        int cnt=0, temp;
        for(int j=0; j<n; ++j)
        {
            if(Matrix[i][j]==1)
            {
                if(cnt==0)
                    temp=j;
                cnt++;
            }
            if(cnt==2)
            {
                VecP.insert(std::make_pair<int, int>(temp+1, j+1));
                Edges.push_back(i+1);
                break;
            }
        }
    }
    std::vector<int>::const_iterator Iter=Edges.begin();
    for(std::set<std::pair<int, int> >::const_iterator It=VecP.begin();
    It!=VecP.end();
    ++It, ++Iter)
    {
        std::cout<<It->first<<'-'<<It->second<<' '<<*Iter<<'\n';
    }
    return 0;
}
 
Текущее время: 22:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru