Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Vadic96
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 39
1

Вывести на экран вершины орграфа, смежные с данной

11.02.2015, 12:07. Просмотров 921. Ответов 4
Метки нет (Все метки)

Вывести на экран те вершины орграфа, смежные с данной, т.е. вывести "входящие" и "выходящие" соседние вершины, но моя программа выводит только "выходящие"
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
#include <fstream>
#include <stdio.h> 
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <sstream> //строковые потоки
 
using namespace std;
 
int main(){
    ifstream inp("input.txt");
    ofstream outp("output.txt");
    int n; 
 
    string str;
    int m1; //данная вершина
    inp >> n;
    inp >> m1;
    vector <int> *vec = new vector <int> [n];
 
    getline(inp,str);
    for (int i = 0; i < n; i++){
        getline(inp,str);
        stringstream sio(str);
        int x;
        while (sio >> x)
        vec[i].push_back(x);
    }
 
    int k = 0;
    for (unsigned int i=1; i<vec[m1-1].size();i++){
            if (vec[m1-1][i] != m1)
            {
                outp << vec[m1-1][i] << "\n";
                k++;
            }
        }
 
 
for (unsigned int i=0; i<vec[m1-1].size();i++){ 
    for (unsigned int j=0; j<vec[vec[m1-1][i]-1].size();j++){
        if ((vec[vec[m1-1][i]-1][j] == m1) && (vec[m1-1][i] != m1)){
            outp << vec[m1-1][i] << "\n";
            k++;
 
 
 
 
    if (k == 0) outp << " NET " << endl;
      }
XML
1
2
3
4
5
6
input.txt
4 3 //4 кол-во вершин 3- выбранная вершина
1 2 4      //список смежности, типо 1 смежна с 2 и 4
2 3
3 4
4 1
Вывести должен 2 и 4

Можете помочь?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 12:07
Ответы с готовыми решениями:

Вывести на экран вершины орграфа, смежные с данной
Уффф, к завтрашнему дню нужно сдать эти задачи, помогите пожалуйста кто чем...

Графы через списки смежности: вывести все вершины, не смежные с данной
вывести на экран все вершины не смежные с данной. код работает, но нужно еще...

Раскрасить вершины графа, чтобы смежные вершины были окрашены в различные цвета
Добрый день. Прошу вашей помощи от безысходности. 4 дня назад выдана задача,...

Вывести для каждой вершины орграфа сначала полустепень захода, а потом полустепень исхода
Ориентированный граф задан списком ребер Есть программа, но она не работает,...

Не смежные вершины матрицы
Найти все не смежные вершины матрицы смежности.

4
Vadic96
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 39
12.02.2015, 17:56  [ТС] 2
Ребята, помогите
0
Vadic96
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 39
14.02.2015, 00:24  [ТС] 3
Хелп
0
Vadic96
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 39
15.02.2015, 12:30  [ТС] 4
Помогите
0
igorrr37
1867 / 1483 / 751
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
15.02.2015, 13:14 5
Лучший ответ Сообщение было отмечено Vadic96 как решение

Решение

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 <fstream>
#include <sstream>
#include <string>
#include <set>
#include <iterator>
#include <vector>
#include <algorithm>
 
int main()
{
    std::ifstream ifs("in.txt");
    if(ifs.is_open())
    {
        std::string str;
        int ver, tmp;
        ifs >> ver >> ver;
        std::istringstream iss;
        std::vector<int> vec;
        std::set<int> st;
        while(std::getline(ifs, str))
        {
            iss.str(str);
            std::vector<int> vec((std::istream_iterator<int>(iss)), std::istream_iterator<int>());
            iss.clear();
            if(std::find(vec.begin(), vec.end(), ver) != vec.end())
            {
                st.insert(vec.begin(), vec.end());
            }
        }
        ifs.close();
        for(std::set<int>::const_iterator ib(st.begin()), ie(st.end()); ib != ie; ++ib)
        {
            if(*ib != ver) std::cout << *ib << '\n';
        }
    }
    else std::cerr << "Unable to open input file\n";
    return 0;
}
1
15.02.2015, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2015, 13:14

Реализация графа через смежные вершины
Здравствуйте. У меня есть задача- написать функции для графа через сопредельные...

Найти все вершины орграфа, от которых существует путь заданной длины к выделенной вершине
Найти все вершины орграфа, от которых существует путь заданной длины к...

Граф задан своей матрицей смежностей, вывести на экран все связные вершины
Граф задан своей матрицей смежностей. Вывести на экран все связные...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru