W tym zadaniu obserwacja jest taka, że jeżeli jakaś para osób nigdy ze sobą nie zagra to znaczy, że zawsze będą w tej samej drużynie.
Czyli wystarczy zapamiętać kto grał w której drużynie i jeżeli na koniec wyjdzie nam, że 2 lub więcej osób mają ten sam zbiór drużyn to wynikiem jest "NIE".
Spamiętywanie drużyn można zrobić hashowaniem. To co jest w tym kodzie jest trochę nietypowe, bo przeważnie to się robi jakoś tak:
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
cin >> a;
if (i < n/2)
hashed[a-1] |= (1 << i);
}
}
Ale ten kod, który znalazłeś robi tak naprawdę to samo