mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
feat: 94. 城市间货物运输 I SPEA新增js算法
This commit is contained in:
@ -464,6 +464,60 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
### Javascript
|
### Javascript
|
||||||
|
|
||||||
|
```js
|
||||||
|
async function main() {
|
||||||
|
// 輸入
|
||||||
|
const rl = require('readline').createInterface({ input: process.stdin })
|
||||||
|
const iter = rl[Symbol.asyncIterator]()
|
||||||
|
const readline = async () => (await iter.next()).value
|
||||||
|
const [n, m] = (await readline()).split(" ").map(Number)
|
||||||
|
const grid = {}
|
||||||
|
for (let i = 0 ; i < m ; i++) {
|
||||||
|
const [src, desc, w] = (await readline()).split(" ").map(Number)
|
||||||
|
if (grid.hasOwnProperty(src)) {
|
||||||
|
grid[src].push([desc, w])
|
||||||
|
} else {
|
||||||
|
grid[src] = [[desc, w]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const minDist = Array.from({length: n + 1}, () => Number.MAX_VALUE)
|
||||||
|
|
||||||
|
// 起始點
|
||||||
|
minDist[1] = 0
|
||||||
|
|
||||||
|
const q = [1]
|
||||||
|
const visited = Array.from({length: n + 1}, () => false)
|
||||||
|
|
||||||
|
while (q.length) {
|
||||||
|
const src = q.shift()
|
||||||
|
const neighbors = grid[src]
|
||||||
|
visited[src] = false
|
||||||
|
if (neighbors) {
|
||||||
|
for (const [desc, w] of neighbors) {
|
||||||
|
if (minDist[src] !== Number.MAX_VALUE
|
||||||
|
&& minDist[src] + w < minDist[desc]) {
|
||||||
|
minDist[desc] = minDist[src] + w
|
||||||
|
if (!visited[desc]) {
|
||||||
|
q.push(desc)
|
||||||
|
visited[desc] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 輸出
|
||||||
|
if (minDist[n] === Number.MAX_VALUE) {
|
||||||
|
console.log('unconnected')
|
||||||
|
} else {
|
||||||
|
console.log(minDist[n])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
```
|
||||||
|
|
||||||
### TypeScript
|
### TypeScript
|
||||||
|
|
||||||
### PhP
|
### PhP
|
||||||
|
Reference in New Issue
Block a user