Все задачи
Средне Решено: 0 Процент решений: 0%

Can We Split Into Two Teams?

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

Условие

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.

Ограничения

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

Примеры

Пример 1
Ввод:
pairs = [
    [1, 2],
    [2, 3],
    [3, 1]
]
people = 3

Ожидаемый вывод:
expected = False
Ввод:
std::vector<std::vector<long long>> pairs = {
    {1, 2},
    {2, 3},
    {3, 1}
};
long long people = 3;

Ожидаемый вывод:
bool expected = false;
Ввод:
long[][] pairs = new long[][] {
    new long[] {1, 2},
    new long[] {2, 3},
    new long[] {3, 1}
};
long people = 3;

Ожидаемый вывод:
bool expected = false;

Пояснение

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

Пример 2
Ввод:
pairs = [
    [1, 2],
    [2, 3]
]
people = 4

Ожидаемый вывод:
expected = True
Ввод:
std::vector<std::vector<long long>> pairs = {
    {1, 2},
    {2, 3}
};
long long people = 4;

Ожидаемый вывод:
bool expected = true;
Ввод:
long[][] pairs = new long[][] {
    new long[] {1, 2},
    new long[] {2, 3}
};
long people = 4;

Ожидаемый вывод:
bool expected = true;

Пояснение

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

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.