Задача сделать поиск друга напрямую и косвенно. Напрямую, я сделал, это легко и понятно, нужно просто ответить дружит ли Вася напрямую с Петей. А вот косвенно, это значит через кого-то. Тут я не много уже задумался. Может подкинете идеи или кто-то уже решал подобное.
namespace Friendship
{
class Friend
{
/* Имя */
private String Name;
/* Список друзей */
private ArrayList Relations;
/*
*
* Устанавливает начальное значение имени
* и выделяет память под Relations.
*
* */
public Friend(String name)
{
this.SetName(name);
this.Relations = new ArrayList();
}
/*
*
* Метод создает взаимную связь между
* текущим и указанным другом.
*
* */
public void ConnectTo(Friend f)
{
this.Relations.Add(f);
f.Relations.Add(this);
}
/*
*
* Метод разрывает связь между текущим и
* указанным другом.
*
* */
public void DisconnectWith(Friend f)
{
this.Relations.Remove(f);
f.Relations.Remove(this);
}
/*
*
* Метод поиска друга на прямую. Отвечает на вопрос: "Знаком
* ли текущий друг с указанным на прямую?"
*
* */
public bool IsDirectConnectWith(Friend f)
{
return this.Relations.Contains(f);
}
/*
*
* Метод поиска косвенных связей.
* Сообщает связан ли текущий друг с указанным,
* любыми другими связями.
*
* */
public bool IsAccrossConnectWith(Friend f)
{
// если связан на прямую, то дальше
// искать нет смысла
if (this.IsDirectConnectWith(f))
{
return true;
}
}
/*
*
* Метод, который устанавливает имя.
*
* */
public void SetName(String name)
{
this.Name = name;
}
/*
*
* Метод возвращает имя.
*
* */
public String GetName()
{
return this.Name;
}
}
}
Подсветку сделал через java