-
Notifications
You must be signed in to change notification settings - Fork 0
/
calcdist.m
29 lines (28 loc) · 860 Bytes
/
calcdist.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function D = calcdist(grafo)
% criando lista de distâncias, iniciando todas com -1
D=-ones(size(grafo,1),1)
% definindo vértice de referência
ref = ceil(random('unif',0,size(grafo,1)));
D(ref)=0;
% colocando vértice na fila para verificar vizinhos
queue=[ref,0];
while not(isempty(queue))
% pegando valores de posição e distância do primeiro da fila
aux_pos = queue(1,1)
aux_dist = queue(1,2)
% para cada vértice
for i=1:size(grafo,1)
% verificar se é vizinho do primeiro da fila
if grafo(aux_pos,i)==1
% verificar se distância já foi calculada
if D(i)==-1
% calcular distância
D(i)=aux_dist+1;
% colocar na fila
queue(end+1,:)=[i,aux_dist+1];
end
end
end
% removendo primeiro da fila
queue(1,:)=[];
end