![]() |
|
#1
|
|||
|
|||
![]() Граф задан матрицей смежности, исп-ся жадный алгоритм. Нужно как-то реализовать как минимум 3 варианта перебора вершин графа.
У меня были варианты: 1) как-нибудь рандомно брать эл-т матрицы и назначать его как стартовый, 2) чтобы пользователь сам вводил стартовый эл-т. Но я не знаю как хотя бы 1 из них реализовать... Помогите пожалуйста. вот код раскраски графа: Код:
const col:array[0..4] of Tcolor= ( clwhite, cllime, clgreen, clyellow, clblue ); var Form1: TForm1; vsego:Integer;//количество вершин графа mas:array[0..4,0..4]of bytebool; masx,masy:array[0..4]of integer;//координаты точки cmas:array of integer;//цвет вершин n: Byte; //Число шагов implementation {$R *.dfm} procedure Redrawgraph;// раскрашиваем граф var i,k:Byte; begin Form1.PaintBox1.Canvas.Brush.Color:=0; //кисть Form1.PaintBox1.Canvas.Pen.Color:=0; //перо Form1.PaintBox1.Canvas.FillRect(rect(0,0,500,500)); //область, где будет располагаться граф Form1.PaintBox1.Canvas.Pen.Color:=clWhite; Form1.PaintBox1.Canvas.Brush.Color:=clNavy; for i:=0 to 4 do for k:=0 to 4 do if(mas[i,k]) then begin Form1.PaintBox1.Canvas.MoveTo(masx[i],masy[i]); //Проводит линию текущим пером из текущей точки (masx[i],masy[i]) Form1.PaintBox1.Canvas.LineTo(masx[k],masy[k]); //Перемещает текущее положение пера в точку (masx[k], masy[k]) end; for i:=0 to 4 do begin Form1.PaintBox1.Canvas.Brush.color:=col[cmas[i+1]]; //раскрашиваем вершины Form1.PaintBox1.Canvas.Ellipse(rect(masx[i]-20,masy[i]-20,masx[i]+20,masy[i]+20));// строим вершины графа end; end; |