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

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

11.02.2015, 12:07. Просмотров 385. Ответов 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++):

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

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

Раскрасить вершины графа, чтобы смежные вершины были окрашены в различные цвета
Добрый день. Прошу вашей помощи от безысходности. 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
1863 / 1481 / 749
Регистрация: 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