Можно программно получить изображение и проверить размеры с помощью JavaScript...
var img = new Image();
img.onload = function() {
alert(this.width + 'x' + this.height);
}
img.src = 'http://www.google.com/intl/en_ALL/images/logo.gif';
Это может быть полезно, если изображение не является частью разметки.
Топологическая сортировка . Описание в Википедии ясное и работает для всех ваших примеров.
Обычно вы начинаете с узла, у которого нет зависимостей, помещаете его в список отсортированных узлов, а затем удаляете эту зависимость из каждого узла. Для вашего второго примера это означает, что вы начинаете с 1. После удаления всех зависимостей от 1 у вас остается 2. В конечном итоге вы сортируете их 1,2,3,4,5 и видите, что цикла нет.
В третьем примере каждый узел имеет зависимость, поэтому начинать некуда. Такой граф должен содержать хотя бы один цикл.
Вести список однозначно идентифицированных узлов. Попробуйте выполнить цикл по всему дереву, но продолжайте проверять узлы в списке, пока не получите узел, называемый дочерним, который уже присутствует в уникальном списке - возьмите его оттуда (обработайте цикл или просто игнорируйте это в зависимости от ваших требований)