Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vadic96
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 39
#1

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

11.02.2015, 12:07. Просмотров 347. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран вершины орграфа, смежные с данной (C++):

Вывести на экран вершины орграфа, смежные с данной - C++
Уффф, к завтрашнему дню нужно сдать эти задачи, помогите пожалуйста кто чем сможет :sorry: (следующие задачи через обходы в глубину и...

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

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

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

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

Определить отца для данной вершины - C++
Процедура нахождения отца для данной вершины.

4
Vadic96
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 39
12.02.2015, 17:56  [ТС] #2
Ребята, помогите
0
Vadic96
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 39
14.02.2015, 00:24  [ТС] #3
Хелп
0
Vadic96
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 39
15.02.2015, 12:30  [ТС] #4
Помогите
0
igorrr37
1668 / 1296 / 145
Регистрация: 21.12.2010
Сообщений: 1,977
Записей в блоге: 9
15.02.2015, 13:14 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Привет! Вот еще темы с ответами:

Проверить, одинаково ли число открывающихся и закрывающихся скобок в данной строке. Определить длину строки, результат вывести на экран. - C++
Помогите решить данные задачи пожалуйста, завтра надо сдавать, заранее спасибо. 1.Проверить, одинаково ли число открывающихся и...

Как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран? - C++
как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран?

Определите и выведите на экран на какие сутки улитка доберется до вершины столбика - C++
Днем (с 7:00 до 20:00) она проползает вверх К см. Ночью - улитка спит, поэтому сползает вниз на Н см. Определите и выведите на экран на...

Вывести все вершины двоичного дерева - C++
Двоичное дерево задано в виде: m,g],s,y]] Как с помощью стека вывести это на экран? Набросайте, кому не трудно алгоритм) просто...


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

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

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