結果

問題 No.92 逃走経路
ユーザー jp_stejp_ste
提出日時 2020-04-20 14:11:11
言語 JavaScript
(node v21.7.1)
結果
AC  
実行時間 340 ms / 5,000 ms
コード長 1,453 bytes
コンパイル時間 93 ms
コンパイル使用メモリ 6,692 KB
実行使用メモリ 48,000 KB
最終ジャッジ日時 2024-10-13 01:43:26
合計ジャッジ時間 3,871 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 241 ms
47,232 KB
testcase_01 AC 56 ms
39,168 KB
testcase_02 AC 56 ms
39,424 KB
testcase_03 AC 57 ms
39,424 KB
testcase_04 AC 57 ms
39,424 KB
testcase_05 AC 66 ms
43,648 KB
testcase_06 AC 64 ms
43,648 KB
testcase_07 AC 68 ms
43,648 KB
testcase_08 AC 71 ms
44,928 KB
testcase_09 AC 333 ms
47,872 KB
testcase_10 AC 170 ms
45,568 KB
testcase_11 AC 202 ms
46,336 KB
testcase_12 AC 340 ms
48,000 KB
testcase_13 AC 191 ms
47,980 KB
testcase_14 AC 203 ms
46,464 KB
testcase_15 AC 245 ms
47,232 KB
testcase_16 AC 209 ms
46,592 KB
testcase_17 AC 208 ms
46,976 KB
testcase_18 AC 116 ms
45,184 KB
testcase_19 AC 79 ms
44,544 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

function main(input) {
  input = input.split("\n");
  let line = input.shift().split(" ");
  const n = Number(line[0]);
  const m = Number(line[1]);
  const k = Number(line[2]);
  let mList = new Array(n);
  for(let i=0; i<n; i++) {
    mList[i] = new Array(n).fill().map(function(e){
      return [];
    });
  }
  for(let i=0; i<m; i++) {
    line = input.shift().split(" ");
    const p1 = Number(line[0]) - 1;
    const p2 = Number(line[1]) - 1;
    const cost = Number(line[2]);
    mList[p1][p2].push(cost);
    mList[p2][p1].push(cost);
  }
  let kList = input.shift().split(" ").map(function(e) {
    return Number(e);
  });
    
  let ansSet = new Set();
  for(let i=0; i<n; i++) {
    for(let j=0; j<n; j++) {
      const index = mList[i][j].indexOf(kList[0]);
      if(index >= 0) {
        ansSet.add(j);
      }
    }
  }
  for(let i=1; i<k; i++) {
    const nextK = kList[i];
    let nextAnsSet = new Set();
    ansSet.forEach(function(from) {
      for(let to=0; to<n; to++) {
        const index = mList[from][to].indexOf(nextK);
        if(index >= 0) {
          nextAnsSet.add(to);
        }
      }   
    });
    ansSet = nextAnsSet;
  }
  const ansList = Array.from(ansSet).sort(function(a, b) {
    return a - b;
  });
  console.log(ansList.length);
  let str = "";
  ansList.forEach(function(e, i) {
    if(i > 0) str += " ";
    str += (e+1);
  });
  console.log(str);
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));
0