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