28 lines
582 B
TypeScript
28 lines
582 B
TypeScript
export {};
|
|
const input = require("fs").readFileSync(0).toString().trim().split("\n").map(Number);
|
|
const [G, P]: number[] = [input[0], input[1]]
|
|
const gi: number[] = input.slice(2);
|
|
|
|
let roots: number[] = Array.from({length : G+1}, (_, i) => i);
|
|
|
|
const find = (g: number): number => {
|
|
if(roots[g] !== g) roots[g] = find(roots[g]);
|
|
return roots[g];
|
|
}
|
|
|
|
const union = (a: number, b: number) => {
|
|
roots[find(a)] = find(b);
|
|
}
|
|
|
|
let ans: number = 0;
|
|
|
|
for(let i=0; i<P; i++) {
|
|
const p = find(gi[i]);
|
|
|
|
if(p === 0) break;
|
|
|
|
union(p, p-1);
|
|
ans++;
|
|
}
|
|
|
|
console.log(ans); |