
02.12.2010, 12:50
|
Прохожий
|
|
Регистрация: 02.12.2010
Сообщения: 1
Репутация: 10
|
|
граф, Delphi
Граф задан матрицей смежности, исп-ся жадный алгоритм. Нужно как-то реализовать как минимум 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;
|