Tous les défis
Moyen 0 résolus 0 % de réussite

Can We Split Into Two Teams?

Decide whether people can be assigned to two teams so that each listed pair is on opposite teams.

Problème

Decide whether people can be assigned to two teams so that each listed pair is on opposite teams. Every person receives exactly one team; either team may be empty. People without a listed pair can go on either team. Check every connected group of constraints.

Implement split_into_two_teams(people, pairs).

Input

people: The number of people, numbered from 1.

pairs: Rows [first_person, second_person] that must be separated.

Output

Return true if any valid assignment exists, otherwise false. Do not return the assignment.

Contraintes

1 ≤ people ≤ 100,000. 0…200,000 pairs of distinct person IDs in 1…people. Duplicate pairs are allowed and repeat the same constraint.

Exemples

Exemple 1
Entrée :
pairs = [
    [1, 2],
    [2, 3],
    [3, 1]
]
people = 3

Sortie attendue :
expected = False
Entrée :
std::vector<std::vector<long long>> pairs = {
    {1, 2},
    {2, 3},
    {3, 1}
};
long long people = 3;

Sortie attendue :
bool expected = false;
Entrée :
long[][] pairs = new long[][] {
    new long[] {1, 2},
    new long[] {2, 3},
    new long[] {3, 1}
};
long people = 3;

Sortie attendue :
bool expected = false;

Explication

If 1 is on team A, 2 must be on B, and 3 must be on A. The last pair then violates the rule.

Exemple 2
Entrée :
pairs = [
    [1, 2],
    [2, 3]
]
people = 4

Sortie attendue :
expected = True
Entrée :
std::vector<std::vector<long long>> pairs = {
    {1, 2},
    {2, 3}
};
long long people = 4;

Sortie attendue :
bool expected = true;
Entrée :
long[][] pairs = new long[][] {
    new long[] {1, 2},
    new long[] {2, 3}
};
long people = 4;

Sortie attendue :
bool expected = true;

Explication

Put 1 and 3 on team A and 2 on team B. Person 4 can join either team.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.