Witam, mam taki problem, ze posiadam kod w C na maksymalny przeplyw w grafie, jednak chcialbym go zamienic, na kod Pascalowy, czy jest osoba ktora pomogła by mi to zrobic ??
Zamieszczam kod w C
#include <iostream>
#include <list>
using namespace std;
main()
{
const int MAXINT = 2147483647;
int n, m, s, t, fmax, cp, x, y, esc, i, j;
list <int> q;
cin >> n >> m;
int C[n+1][n+1], F[n+1][n+1];
int p[n+1], cfp[n+1];
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++) F[i][j] = C[i][j] = 0;
for(i = 1; i <= m; i++)
{
cin >> x >> y >> cp;
C[x][y] = cp;
}
cin >> s >> t;
fmax = 0;
do
{
for(i = 1; i <= n; i++) p[i] = 0;
p[s] = -1;
cfp[s] = MAXINT;
q.clear(); q.push_back(s);
esc = 0;
while(q.size())
{
x = q.front(); q.pop_front();
for(y = 1; y <= n; y++)
{
cp = C[x][y] - F[x][y];
if(cp && !p[y])
{
p[y] = x;
cfp[y] = cfp[x] > cp ? cp : cfp[x];
if(y == t)
{
fmax += cfp[t];
while(y != s)
{
x = p[y];
F[x][y] += cfp[t];
F[y][x] -= cfp[t];
y = x;
}
esc = 1; break;
}
q.push_back(y);
}
}
if(esc) break;
}
if(!esc) break;
} while(true);
cout << "\nfmax = " << fmax << endl << endl;
for(x = 1; x <= n; x++)
for(y = 1; y <= n; y++)
if(C[x][y])
cout << x << " -> " << y << " "
<< F[x][y] << "/" << C[x][y] << endl;
cout << endl;
system("PAUSE");
}
A o to moj kod pascalowy
program maksymalny_przeplyw;
uses crt;
type
tablica=array [0..20,0..20] of integer;
tablica2=array[0..20] of integer;
wsk_element=^element;
Element=RECORD
dane : integer;
nastepny : wsk_element;
end;
var n,m,x,y,cp,i,j,s,t,fmax,esc:integer;
C,F:tablica;
p,cfp:tablica2;
liczba : integer;
poczatek : wsk_element;
koniec : wsk_element;
pentla:boolean;
procedure do_kolejki(VAR poczatek, koniec : wsk_element; liczba : integer);
VAR
temp : wsk_element;
BEGIN
temp:=koniec;
new(koniec);
koniec^.dane:=liczba;
IF (temp<>nil) THEN temp^.nastepny:=koniec
ELSE poczatek:=koniec;
END;
procedure z_kolejki(VAR poczatek, koniec : wsk_element; VAR liczba : integer);
VAR
temp : wsk_element;
BEGIN
liczba:=poczatek^.dane;
temp:=poczatek^.nastepny;
dispose(poczatek);
poczatek:=temp;
IF (poczatek=nil) THEN koniec:=nil;
END;
begin
clrscr;
writeln('Ilosc wierzcholkow');
readln(n);
writeln('Ilosc krawedzi');
readln(m);
for i:=1 to n do
for j:=1 to n do
begin
C[i,j]:=0;
F[i,j]:=0;
end;
for i:=1 to m do
begin
writeln('x,y,cp');
readln(x,y,cp);
C[x,y]:=cp;
end;
writeln('Start');
readln(s);
writeln('Koniec');
readln(t);
{**********}
fmax:=0;
pentla:=true;
while (pentla=true) do
begin
for i:=1 to n do p[i]:=0;
p[s]:=-1;
cfp[s]:=32000;
do_kolejki(poczatek, koniec, s);
while (poczatek<>nil) do
begin
z_kolejki(poczatek, koniec, x);
for y:=1 to n do begin
cp:=C[x,y] - F[x,y];
if ((cp=0) or (p[y]<>0)) then
begin
p[y]:=x;
if (cfp[x]>cp) then cfp[y]:=cp else cfp[y]:=cfp[x];
if (y=t) then
begin
fmax:=fmax+cfp[t];
while (y <> s) do
begin
x:=p[y];
F[x,y]:=F[x,y]+cfp[t];
F[y,x]:=F[y,x]-cfp[t];
y:=x;
end; //koniec while (y <> s)
end; //koniec if (y=t)
do_kolejki(poczatek,koniec,y);
end;//koniec if ((cp=0) or (p[y]<>0))
end; // koniec for y:=1 to n do
end; // while (poczatek<>nil)
end; // while (pentla=false)
writeln('fmax',fmax);
for x:=1 to n do
for y:=1 to n do
if (C[x,y]<>0) then writeln (x,' -> ',y,' ',F[x,y],'/',C[x,y]);
readkey;
end.
Bardzo prosiłbym o pomoc.