Фамилия брюнета Ивана - Антонов, Борисов, Глебов или Дмитриев. Но
Антонов и Глебов не женаты, а Иван женат на сестре жены Дмитриева.
Поэтому Иван имеет фамилию Борисов.
Егоров блондин, то есть его имя - Борис, Дмитрий, Антон или Глеб. Но так
как человек, фамилия которого совпадает с именем Егорова, женат,
то имена Антон и Глеб исключаются. Кроме того, теперь
можно исключить и имя Борис: в этом случае из условия следовало бы, что
имя Борисова - Егор, а мы уже выяснили, что его зовут Иван.
Методом исключения получаем, что имя Егорова - Дмитрий.
Следовательно, фамилия Бориса совпадает с именем Дмитриева.
Отсюда, кстати, следует, что Борис - не Иванов.
Поэтому для блондина Иванова остаются только два имени - Антон или Глеб.
Но Глеб отпадает по условию (его фамилия не Иванов, а лишь совпадает с
именем Иванова). Значит, Иванова зовут Антон. Тогда Глеб
имеет фамилию Антонов. Соответственно, неженатый Егор - Глебов.
Остались только Василий и Борис, фамилии которых - Васильев и Дмитриев.
Ясно, что фамилия Бориса - Васильев, а Василия - Дмитриев.