ᅠ
Size: a a a
ᅠ
А
L
А
А
const canState = text => {переписал на жс
const [finalState, favoriteNums] = text
.split(/[\r\n]+/)
.map(s => s.trim())
.filter(Boolean)
.slice(1)
.map(s => s.split(/\s+/).map(Number))
const g = Array(favoriteNums.length).fill(0).map(() => [])
for(let i = 0; i < favoriteNums.length; i++) {
const i1 = i + favoriteNums[i], i2 = i - favoriteNums[i]
if ( i1 < favoriteNums.length ) {
g[i ].push(i1);
g[i1].push(i );
}
if ( i2 >= 0 ) {
g[i ].push(i2);
g[i2].push(i );
}
}
const dfs = (i, dst, favoriteNums, g, set = new Set) => {
if ( set.has(i) )
return false;
set.add(i)
if ( i == dst )
return true;
return g[i].some(i2 => dfs(i2, dst, favoriteNums, g, set))
}
return finalState.every((dst, i) => dfs(i, dst - 1, favoriteNums, g))
}
console.log( canState(`
7
4 3 5 1 2 7 6
4 6 6 1 6 6 1
`) )
console.log( canState(`
7
4 2 5 1 3 7 6
4 6 6 1 6 6 1
`) )
А
L
А
А
L
parseInt
А
parseInt
AP
AP
А
А