Запускаю код
var inputFirst = `5 3
0 1
2 3
0 4`;
alert(journeyToTheMoon(parseInput(inputFirst)));
function journeyToTheMoon(data) {
var n = data[0],
p = data[1],
pairs = data[2];
//patriots are grooped to countries
var patriots = [],
internationalists = [],
quantity,
patriotsPairs = 0,
internationalistsPairs = 0,
mixPairs = 0,
interTotal = 0,
patrTotal = 0;
for (let y = 0; y < n; y++) {
internationalists.push(true);
}
interTotal = internationalists.length;
if (pairs.length > 0) {
patriots.push(pairs[0]);
patrTotal += 2;
internationalists[pairs[0][0]] = internationalists[pairs[0][1]] = false;
interTotal -= 2;
}
for (let i = 0; i < pairs.length; i++) {
let countryZero = whichCountryPatriot(pairs[i][0], patriots);
let countryOne = whichCountryPatriot(pairs[i][1], patriots);
if (countryZero !== null && countryOne === null) {
patriots[countryZero].push(pairs[i][1]);
patrTotal++;
internationalists[pairs[i][1]] = false;
interTotal--;
} else if (countryZero === null && countryOne !== null) {
patriots[countryOne].push(pairs[i][0]);
patrTotal++;
internationalists[pairs[i][0]] = false;
interTotal--;
} else if (countryZero === null && countryOne === null) {
patriots.push([pairs[i][0], pairs[i][1]]);
patrTotal += 2;
internationalists[pairs[i][0]] = internationalists[pairs[i][1]] = false;
interTotal -= 2;
}
}
// count patriots pairs
quantity = patrTotal;
for (let p = 0; p < patriots.length; p++) {
quantity -= patriots[p].length;
for (let q = 0; q < patriots[p].length; q++) {
patriotsPairs += 1 * quantity;
}
}
// math theoreme
if (interTotal !== 0) {
internationalistsPairs = interTotal - 1;
} else {
internationalistsPairs = 0;
}
// count internationalists with patriots
mixPairs = interTotal * patrTotal;
return patriotsPairs + internationalistsPairs + mixPairs;
}
function parseInput(input) {
if (typeof input !== "string") {
input = input.toString();
}
var data = input.split("\n");
data = data.map(item => {
var line = item.split(" ");
for (let si = 0; si < line.length; si++) {
line[si] = +line[si];
}
return line;
});
console.log("parser", data[1][0], data[1][1], data[1][2]);
console.log("parser", data[1]);
let [n, p] = data.shift(data[0]);
return [n, p, data];
}
function whichCountryPatriot(spaceman, patriots) {
for (let j = 0; j < patriots.length; j++) {
for (let k = 0; k < patriots[j].length; k++) {
if (spaceman === patriots[j][k]) {
return j;
}
}
}
return null;
}
и не понимаю, как туда четверка "вперлась"
Выделяю частную задачу
var inputFirst = `5 3
0 1
2 3
0 4`;
var data = parseInput(inputFirst);
function parseInput(input) {
if (typeof input !== "string") {
input = input.toString();
}
var data = input.split("\n");
data = data.map(item => {
var line = item.split(" ");
for (let i = 0; i < line.length; i++) {
line[i] = +line[i];
}
return line;
});
console.log("parser", data[1][0], data[1][1], data[1][2]);
console.log("parser", data[1]);
let [n, p] = data.shift(data[0]);
return [n, p, data];
}
четверки нету