Advertisement
alvsjo

Putevi

Feb 27th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.81 KB | None | 0 0
  1. //za datu shemu 1-smjer puteva napisati program pomocu koga se odredjuje
  2. //moze li se iz grada i u grad j doci, i ako moze, naci duzinu puta
  3. program jednosmjerni;
  4. {
  5.     aij= 1 ako postoji direktan put; 0 ako ne
  6.    
  7. 1   0 0 0 1 0 0 1
  8. 2   0 0 0 0 0 1 0
  9. 3   0 1 0 0 1 0 0
  10. 4   0 0 1 0 0 0 0
  11. 5   0 1 0 0 0 0 0
  12. 6   1 0 0 0 0 0 0
  13. 7   0 0 0 0 1 0 0  (zanemarujemo glavnu dijagonalu)
  14.    
  15. 1   0 0 2 1 2 0 1
  16. 2   0 0 0 0 0 1 0
  17. 3   0 1 0 0 1 0 0
  18. 4   0 0 1 0 0 0 0
  19. 5   0 1 0 0 0 0 0
  20. 6   1 0 0 0 0 0 0
  21. 7   0 0 0 0 1 0 0
  22.    
  23. }
  24. type
  25.     niz=array[1..20]of integer;
  26.     matrica=array[1..20]of niz;
  27. var
  28.     m,n,i,j,k:integer;
  29. //  x,y,z:niz;
  30.     a,b,c:matrica;
  31.  
  32.  
  33.  
  34.  
  35.  
  36. procedure UnosMatrice(var m,n:integer; var a:matrica);
  37. var i,j:integer;
  38. begin
  39.     write('Broj vrsta: ');
  40.     readln(m);
  41.     write('Broj kolona: ');
  42.     readln(n);
  43.     for i:=1 to m do
  44.     begin
  45.         for j:=1 to n do
  46.         begin
  47.         write('A[',i,';',j,']= ');
  48.         readln(A[i,j]);
  49.         writeln;
  50.         end;
  51.     end;
  52. end;   
  53.  
  54.  
  55. procedure StampaMatrice(m,n:integer; A:matrica);
  56. var i,j:integer;
  57. begin
  58.     writeln;
  59.     for i:=1 to m do
  60.     begin
  61.         for j:=1 to n do
  62.         begin
  63.         write(A[i,j]:4);
  64.         end;
  65.         writeln;
  66.     end;
  67.     writeln;
  68. end;
  69.  
  70. procedure noveVeze(n:integer; a:matrica;var b:matrica);
  71. //n broj gradova
  72. // a matrica direktnih puteva
  73. //b matrica puteva sa presjedanjima
  74. var broj:integer; nastavi:boolean;
  75. begin
  76. broj:=2;
  77. nastavi:=true;
  78. while nastavi do
  79.     begin
  80.         nastavi:=false;
  81.         for i:=1 to n do
  82.             begin
  83.             for j:=1 to n do
  84.                 begin
  85.                 if(i<>j) and (b[i,j]=0)
  86.                 then
  87.                 begin
  88.                     for k:=1 to n do
  89.                     begin
  90.                         if (a[i,k]=1)and(b[k,j]=broj-1) then
  91.                             begin
  92.                                 b[i,j]:=broj;
  93.                                 nastavi:=true;
  94.                             end;
  95.                     end;
  96.                 end;
  97.                
  98.                 end;
  99.             end;
  100.         broj:=broj+1;
  101.     end;
  102. end;
  103.  
  104. begin
  105. UnosMatrice(m,n,a);
  106. StampaMatrice(m,n,a);
  107. b:=a;
  108. noveVeze(n,a,b);
  109. StampaMatrice(n,n,b);
  110. readln;
  111.  
  112. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement