36 lines
802 B
TypeScript
36 lines
802 B
TypeScript
export {};
|
|
const input = require("fs").readFileSync(0).toString().trim().split('\n');
|
|
const [n, m]: number[] = input[0].split(" ").map(Number);
|
|
|
|
let parent: number[] = Array.from({length: n}, (_, i) => i);
|
|
let rank: number[] = new Array(n).fill(0);
|
|
|
|
const find = (x: number): number => {
|
|
if(x !== parent[x]) return parent[x] = find(parent[x]);
|
|
return parent[x];
|
|
}
|
|
|
|
const union = (x: number, y: number): boolean => {
|
|
x = find(x);
|
|
y = find(y);
|
|
|
|
if(x===y) return false;
|
|
|
|
if(rank[x] < rank[y]) [x, y] = [y, x];
|
|
|
|
parent[y] = x;
|
|
if(rank[x] === rank[y]) rank[x] += 1;
|
|
|
|
return true;
|
|
}
|
|
|
|
let ans: number = 0;
|
|
for(let i=1; i<=m; i++) {
|
|
let [u, v]: number[] = input[i].split(" ").map(Number);
|
|
if(!union(u, v)) {
|
|
ans = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
console.log(ans); |