Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Vlad keno
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 12
1

Ввод через текстовый документ матрица смежности

11.09.2019, 17:29. Просмотров 170. Ответов 0

Помогите пожалуйста сделать ввод через текстовый файл Матрицу смежности

Pascal
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
53
54
55
56
57
58
const MaxN = 100;
type Matrix = array[1..MaxN,1..MaxN] of boolean; //тип матрицы смежности. M[i,j] = true, если станции i и j соединены.
 
var
A : Matrix;
i, j, N, k, aa, bb, S, R, c: integer;
 
procedure BFS(A : Matrix; N, V, R : integer); //обход в ширину (V - корневая вершина)
var i, ps, pe : integer;
visited : array [1..MaxN] of boolean; //массив посещённости вершин
q : array [1..MaxN] of integer; //"очередь" вершин
ql : array [1..MaxN] of integer; //и их уровней.
begin //в качестве списка очередных вершин будем использовать структуру "очередь"
    ps := 1; //начало очереди
    pe := 1; //конец очереди
    q[pe] := v; //в очередь помещается исходная вершина. На каждом шаге в очередь будем заносить всех преемников данной вершины (назовём их 1-го уровня, т.е. до которых можно дойти напрямую). Затем просматриваем в очереди занесённые ранее вершины 1-го уровня и добавляем в конец очереди вершины 2-го уровня и так далее до опустошения очереди.
    visited[v] := TRUE; //вершина V посещена
    ql[ps] := 0; //сама вершина - нулевой уровень
    while (ps <= pe) and (ql[ps] < R) do //пока очередь не пуста или не достигли необходимого уровня R
    begin
        for i := 1 to n do if (A[v, i]) and (not visited[i]) then //перебираем все связные с V вершины
        begin
            inc(pe); //и добавляем в очередь
            q[pe] := i;
            ql[pe] := ql[ps] + 1; //отмечаем новый уровень преемника.
            visited[i] := true; //отмечаем вершину I пройденной
        end;
 
        inc(ps); //переходим к следующей вершине в очереди
        v := q[ps]; //и делаем её корневой
    end;
    while (ql[ps] = R) and (ps <= pe) do //после работы цикла в очереди останутся только вершины, имеющие уровень R и более.
    begin
        write(q[ps],' ');
        inc(ps);
    end;
end;
 
BEGIN
    assign(input,'input.txt');
    reset(input);
    readln(input, N, c);
    for i:=1 to c do
    begin
        read(input, aa, k);
        for j:=1 to k do
        begin
            read(input, bb);
            A[aa, bb] := true;
            A[bb, aa] := true;
        end;
        readln(input);
    end;
    readln(input, S);
    readln(input, R);
    close(input);
    BFS(A, N, S, R);
END.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2019, 17:29
Ответы с готовыми решениями:

Матрица смежности, ввод через рёбра
Помогите пожалуйста!!!! Есть программа которая находит достижимые вершины из заданной вершины, я...

Матрица через текстовый документ в Visual Studio 12
Подскажите пожалуйста, куда нужно перенести текстовый документ с матрицей. Переносил в корень...

Текстовый документ через паскаль
помогите пожалуйста: надо открыть через паскаль блокнот в котором написана 1 строка, после этого...

Графы. Ввод матрицы смежности, матрица инцидентности и список инцидентности неориентированного графа
Здраствуйте. Помогите пожалуйста, а то вообще не врубаюсь в это. Надо написать процедуры ввода...

Перенос документов через текстовый документ
Здравствуйте! Подскажите, пожалуйста, как можно решить следующую задачу: имеется усн7.7 и ТиС7.7 Из...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2019, 17:29

Не получается создать картинку через текстовый документ, ошибка
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Граф (Матрица смежности, список смежности)
Понятия неимею, как можно написать код по условию программы так как с графами не бум бум. ...

Ввод через selection идет в другой документ
Добрый день. Необходимо в цикле (строки 33-53) осуществить заполнение ячеек таблицы в ворде...


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

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

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