Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. program grafos;
  2. type PElem = ^Elem;
  3. Elem = record
  4. szam: integer;
  5. kov: PElem ;
  6. end;
  7. type Tedge = record
  8. edge: PElem;
  9. megnezve:boolean;
  10. end;
  11.  
  12. var
  13. akt,uj,elso,utolso:PElem;
  14. n,i,a,j,m,b:integer;
  15. edges:array[1..10]of Tedge;
  16. szom:array[1..10,1..10]of byte;
  17. procedure Betesz(i,sz:integer);
  18. begin
  19. new(uj);
  20. uj^.szam:=sz;
  21. uj^.kov:=nil;
  22. if edges[i].edge = nil then
  23. edges[i].edge:=uj
  24. else
  25. begin
  26. akt:=edges[i].edge;
  27. while akt^.kov<> nil do
  28. akt:=akt^.kov;
  29. akt^.kov:=uj;
  30. end;
  31. end;
  32. procedure kiir(i:integer);
  33. begin
  34. akt:=edges[i].edge;
  35. while akt<> nil do
  36. begin
  37. write(akt^.szam,',');
  38. akt:=akt^.kov;
  39. end;
  40. end;
  41. procedure SorBatesz(nnev:integer);
  42. var uj:PElem;
  43. begin
  44. new(uj);
  45. uj^.szam:=nnev;
  46. uj^.kov:=nil;
  47. if elso = nil then
  48. begin
  49. elso:=uj;
  50. utolso:=elso;
  51. end
  52. else
  53. begin
  54. utolso^.kov:=uj;
  55. utolso:=uj;
  56. end;
  57. end;
  58. procedure kivesz();
  59. var temp:PElem;
  60. begin
  61. if elso <> nil then
  62. begin
  63. temp:=elso;
  64. elso:=elso^.kov;
  65. dispose(temp);
  66. end;
  67. end;
  68.  
  69. Function ures():boolean;
  70. begin
  71. if (elso = nil) then ures:=TRUE
  72. else ures:=FALSE;
  73. end;
  74. procedure szelBejarGraf(nev:integer);
  75. var akt:Pelem;
  76. begin
  77. SorBatesz(nev);
  78. edges[nev].megnezve:=TRUE;
  79. while(NOT ures()) do
  80. begin
  81. akt:= edges[elso^.szam].edge;
  82. while akt<>nil do
  83. begin
  84. if (edges[akt^.szam].megnezve = FALSE ) then
  85. begin
  86. SorBatesz(akt^.szam);
  87. edges[akt^.szam].megnezve:=TRUE;
  88. end;
  89. akt:=akt^.kov;
  90. end;
  91. write(elso^.szam,',');
  92. kivesz;
  93. end;
  94. end;
  95. procedure melyBejarGraf(akt:Pelem);
  96. begin
  97. if (akt = nil) then exit ;
  98. if (edges[akt^.szam].megnezve = FALSE) then
  99. begin
  100. edges[akt^.szam].megnezve:=TRUE;
  101. write(akt^.szam,',');
  102. melyBejarGraf (edges[akt^.szam].edge);
  103. end;
  104. akt:=akt^.kov;
  105. melyBejarGraf(akt);
  106. end;
  107. procedure szomszed;
  108. begin
  109. for i:=1 to n do
  110. for j:=1 to n do
  111. szom[i,j]:=0;
  112. for i:=1 to n do
  113. begin
  114. akt:=edges[i].edge;
  115. while akt<>nil do
  116. begin
  117. szom[i,akt^.szam]:=1;
  118. akt:=akt^.kov;
  119. end;
  120. end;
  121. for i:=1 to n do
  122. begin
  123. for j:=1 to n do
  124. write(szom[i,j]);
  125. writeln;
  126. end;
  127. end;
  128. function kapcslista(o1,p1:integer):boolean;
  129. begin
  130. akt:=edges[o1].edge;
  131. while akt<>nil do
  132. begin
  133. if akt^.szam=p1 then
  134. begin
  135. kapcslista:=true;
  136. exit;
  137. end
  138. else
  139. akt:=akt^.kov;
  140. end;
  141. kapcslista:=false;
  142. end;
  143. procedure kozosszomszed(elso,masodik:integer);
  144. begin
  145. for i:=1 to n do
  146. begin
  147. if (i=elso) or (i=masodik) then
  148. begin
  149. //ha az i egyenlo az elsovel vagy masodikkal akkor ne csinaljon semmit
  150. end
  151. else if ((kapcslista(elso,i)) and (kapcslista(masodik,i)) and (kapcslista(i,elso)) and (kapcslista(i,masodik))) then
  152. write(i,',');
  153. end;
  154. end;
  155. begin
  156.  
  157. {writeln('Mennyi VERTEX van?');
  158. readln(n);
  159. for i:=1 to n do
  160. begin
  161. repeat
  162. writeln('Kerem a(z) ',i,' vertex kapcsolatat');
  163. readln(a);
  164. if a<>0 then
  165. betesz(i,a);
  166. betesz(a,i);
  167. until a=0;
  168. end; }
  169. n:=5;
  170. betesz(1,2);
  171. betesz(1,3);
  172. betesz(1,4);
  173. betesz(2,1);
  174. betesz(2,4);
  175. betesz(3,1);
  176. betesz(4,1);
  177. betesz(4,2);
  178. betesz(4,5);
  179. betesz(5,4);
  180. writeln('Az edge tablazat');
  181. for i:=1 to n do
  182. begin
  183. kiir(i);
  184. writeln;
  185. end;
  186. writeln('Szelessegi bejaras');
  187. szelbejargraf(1);
  188. writeln;
  189. for i:=1 to n do
  190. edges[i].megnezve:=False;
  191. writeln('Melysegi bejaras');
  192. edges[1].megnezve:=TRUE;
  193. write('1,');
  194. melyBejarGraf( edges[1].edge);
  195. writeln;
  196. writeln('Szomszedsagi matrix');
  197. szomszed;
  198. writeln;
  199. writeln('Kerek 1 VERTEXet!');
  200. readln(b);
  201. writeln('Kerek meg 1 VERTEXet!');
  202. readln(m);
  203. writeln;
  204. writeln('Matrixos!');
  205. if (szom[b,m]=1) and (szom[m,b]=1) then
  206. writeln('Van kapcsolat!')
  207. else
  208. writeln('Nincs kapcsolat!');
  209. writeln;
  210. writeln('Listas');
  211. if (kapcslista(b,m)=true) and (kapcslista(m,b)=true) then
  212. writeln('van kapcsolat!')
  213. else
  214. writeln('Nincs kapcsolat!');
  215. write('Kozos szomszed:');
  216. kozosszomszed(b,m);
  217.  
  218. readln;
  219. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement