Сайт підготовки до олімпіади з інформатики

програмування в С++

Пошук у ширину та глибину, ейлерів та гамільтонів графи PDF Печать E-mail
Добавил(а) Administrator   
16.02.11 14:25

Задача 1.ластивості Ейлера) Є N поселень. Деякі поселення попарно  з'єднані  стежками. За ними ніякі дві  стежки  загальних  точок  не  мають.  В цілочисельній таблиці СТЕЖКИ [1..N,1..N] задана  інформація  про стежки; кількість стежок між і-m і j-m рівна  значенню  елемента таблиці СТЕЖКИ [і,j]=СТЕЖКИ[j,і]>0 (в тому числі і=j);  Написати алгоритм, який визначає, чи можливо зобразити карту стежок,  не відриваючи олівця від паперу і не малюючи жодної стежки двічі.

Задача 2. (Пошук в глибину)

Турбаза мала для ночівлі N місць, з’єднаних стежками. Туристів можна вести в одну сторону. Довжина стежки – одноденний перехід. Пройти і перевірити всі M-денні маршрути, які починаються на базі K.

 

 graph1

Задача 3. Міжнародна конференція

Вас найняли для того, щоб визначити мiсця дипломатiв за столом обговорень мiжнародної конференцiї. На конференцiю запрошенi по одному дипломату з N рiзних країн свiту. Кожен дипломат знає вiд однiєї до М мов. Дипломати, якi не знають спiльної мови, не можуть розмовляти один з одним. До того ж, деякi країни проголосили, що не будуть пiдтримувати дипломатичних стосункiв  з деякими iншими, тобто представники  цих країн не будуть розмовляти один з одним. Ваше  завдання  полягає в розробцi програми  DIPLOMAT.*, що визначає мiсця за столом для дипломатiв таким чином, щоб кожен мiг розмовляти з обома своїми сусiдами, якi сидять лiворуч та праворуч вiд нього.

Стiл, що використовується, круглий i розрахований на N персон. Дипломат може спiлкуватись з дипломатом, який сидить лiворуч однiєю мовою, а з дипломатом, що сидить праворуч, – iншою.

Вхiднi данi:

В першому рядку текстового          файлу DIPLOMAT.DAT – число N. Далi – N рядкiв, по одному рядку на дипломата. Кожен рядок – послiдовнiсть слiв. Сусiднi слова вiдокремленi пропуском. Кожне слово – це послiдовнiсть великих латинських лiтер. Перше слово – код країни – складається з 3 лiтер. Друге слово           має довжину вiд      1 до 5 лiтер i представляє перелiк мов, на яких може спiлкуватись дипломат. Кожна мова позначена однiєю лiтерою. Далi iде список з не бiльш як N              трилiтерних слiв – кодiв  країн, з якими уряд дипломата  пiдтримує стосунки.

Вихiднi данi:

До файлу DIPLOMAT.SOL треба  вивести список  дипломатiв в порядку розмiщення за  столом  (по одному дипломату в рядку). Кожен рядок складається з 3 слiв: перше – код           мови, якою  дипломат може спiлкуватись з  сусiдом  лiворуч, друге – код країни дипломата, третє – код мови для спiлкування з сусiдом праворуч. Можливе iснування  декiлькох   розв'язкiв. Вам  потрiбно  знайти  один. Якщо розв'язку не iснує, Ваша програма повинна видати таке повiдомлення: NO SOLUTION EXISTS.

Приклад вхiдних даних

Приклад вихiдних даних

10

USA EF CHN GBR USR FRA FRG JPN ISR  POR KOR

CHN CFE USA GBR FRA FRG                                                                                             

GBR ER USA CHN USR FRA FRG JPN ISR POR KOR

USR RF USA GBR FRA FRG                                                                 

FRA F USA CHN GBR USR FRG JPN ISR POR                                     

FRG ERG USA CHN GBR USR FRA JPN ISR POR                                

JPN JHG USA GBR FRA FRG JPN ISR POR KOR                                 

ISR YER USA GBR FRA FRG JPN KOR                                                                               

POR PGE USA GBR FRA FRG JPN                                                                      

KOR KEC USA GBR USR JPN ISR                                        

E USA E

E KOR E

E ISR H

H JPN G

G FRG G

G POR E

E GBR E

E USR F

F FRA F

F CHN E

 

procedure p(ni,v:integer);

var s,ii:integer;

begin

c[ni]:=v;

if(ni=n)then begin

{***** 1}

for ii:=1 to ni do write(c[ii]);

end

else

for ii:=1 to n do

if (a[v,ii]>0)and (f(ni,ii)) then p(ni+1,ii);

end;

 

Практична робота «Пошук у ширину та глибину, ейлерів та гамільтонів графи»

Завдання

Результат

1.                    

Намалювати граф з кількістю вершин N=6

(ненавантажений, неорієнтований)

 

 

 

 

 

2.                    

Написати матрицю суміжності

 

 

 

 

 

 

1

2

3

4

5

6

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

3.                    

Скопіювати папку «!Лабораторна 9 графи» в свою папку

Занести матрицю в файл graph.dat

 

4.                    

За допомогою програми  graph1.dpr відшукати всі шлях з вершини 1 довжиною 3 (шлях з 4 вершин)

 

5.                    

За допомою програми  graph2.dpr відшукати всі гамільтонові шляхи

 

6.                    

За допомою програми  graph3.dpr відшукати  ейлеровий шлях

 

7.                    

За допомогою програми  graph4.dpr створити навантажений неорієнтований граф та відшукати найкоротший гамільтонів шлях

N

 

3

 

5

 

7

 

9

 

10

 

12

 

13

 

20

 

50

 

100

 

8.                    

Зробіть висновок

 

 

 

 

 

 

 

Статистика

Пользователей : 261
Статей : 225
Просмотрено статей : 115295

Вход/Регистрация

Нет