Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Main;
- const NOWAY = -1;
- const UNSELECTED = 0;
- const SELECTED = 1;
- type String = array * of integer;
- type Table = array * of String;
- type {ref, public} Graph = record
- siz: integer;
- table: Table;
- end Graph;
- procedure createGraph(table: Table; siz: integer): Graph;
- var g: Graph;
- begin
- g := new Graph;
- g.siz := siz;
- g.table := table;
- return g;
- end createGraph;
- procedure distRec(var graph: Graph; var uns: Table; cur: integer; e: integer; d: integer; var result: integer);
- var i: integer;
- var curDist: integer;
- begin
- if cur = e then
- if (result > d) or (result = NOWAY) then
- result := d;
- end;
- else
- for i := 0 to graph.siz-1 do
- if uns[cur][i] = UNSELECTED then
- uns[cur][i] := SELECTED;
- curDist := graph.table[cur][i];
- if curDist # NOWAY then
- distRec(graph, uns, i, e, d+curDist, result);
- end;
- uns[cur][i] := UNSELECTED;
- end;
- end;
- end;
- end distRec;
- procedure dist(var graph: Graph; b: integer; e: integer): integer;
- var result: integer;
- var uns: Table;
- begin
- result := NOWAY;
- uns := new Table(n, n);
- for i := 0 to n-1 do
- for j := 0 to n-1 do
- t[i][j] := UNSELECTED;
- end;
- end;
- distRec(graph, uns, b, e, 0, result);
- return result;
- end dist;
- var n: integer;
- var curva: integer;
- var p1: integer;
- var p2: integer;
- var i: integer;
- var j: integer;
- var t: Table;
- var g: Graph;
- begin
- read(n);
- t := new Table(n, n);
- for i := 0 to n-1 do
- for j := 0 to n-1 do
- t[i][j] := NOWAY;
- end;
- end;
- read(curva);
- while curva # NOWAY do
- read(p1);
- read(p2);
- t[p1][p2] := curva;
- t[p2][p1] := curva;
- read(curva);
- end;
- g := createGraph(t, n);
- writeln("0->1 : [", dist(g, 0, 1), "]");
- writeln("1->2 : [", dist(g, 1, 2), "]");
- writeln("2->0 : [", dist(g, 2, 0), "]");
- (*i := 0 to g.siz-1 do
- for j := 0 to g.siz-1 do
- write(dist(g, i, j));
- end;
- writeln(" ");
- end;*)
- read(n);
- end Main.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement