youngyangyang04 / leetcode-master-comment

用来做评论区
0 stars 0 forks source link

[Vssue]kamacoder/0053.寻宝-prim.md #204

Open youngyangyang04 opened 3 weeks ago

youngyangyang04 commented 3 weeks ago

https://www.programmercarl.com/kamacoder/0053.%E5%AF%BB%E5%AE%9D-prim.html

DEZREMNACUI commented 1 week ago
import { createInterface } from "readline/promises";

const rl = createInterface({
  input: process.stdin,
});

const readline = async () =>
  (await rl[Symbol.asyncIterator]().next()).value as string;

const main = async () => {
  const [dots, edges] = (await readline()).split(" ").map(Number);
  const grid = Array.from({ length: dots + 1 }, () =>
    Array.from({ length: dots + 1 }, () => 0)
  );
  for (let i = 0; i < edges; i++) {
    const [s, t, v] = (await readline()).split(" ").map(Number);
    grid[s][t] = v;
    grid[t][s] = v;
  }
  const minDist = new Array(dots + 1).fill(Infinity) as number[];
  minDist[1] = 0;
  const isInTree = Array.from({ length: dots + 1 }, () => false);
  for (let i = 1; i < grid.length; i++) {
    let minValue = Infinity;
    let curr: null | number = null;
    for (let j = 1; j < grid[0].length; j++) {
      if (minDist[j] < minValue && !isInTree[j]) {
        minValue = minDist[j];
        curr = j;
      }
    }
    isInTree[curr!] = true;
    // console.log(curr)
    for (let j = 1; j < grid.length; j++) {
      if (!isInTree[j] && grid[curr!][j] !== 0 && grid[curr!][j] < minDist[j]) {
        minDist[j] = grid[curr!][j];
      }
    }
  }

  console.log(minDist.slice(1).reduce((acc, curr) => acc + curr));
};

main();