隣接リストの出力《グラフ理論》

グラフ構造の入力メニュー【隣接リストの出力(無向グラフ)・隣接リストの出力(有向グラフ)】

【STEP: 1】コード

reader.on('close', () => {
   function adjacency_List(a, b) {
      List[a].push(b + 1);
      List[b].push(a + 1);
   }
   const List = [];  // 隣接リスト
   const [N, M] = lines[0].split(' ').map(Number);
   for (let i = 0; i < N; i++) {
      List.push([]);
   }
   for (let i = 1; i <= M; i++) {
   const [A, B] = lines[i].split(' ').map(e => e - 1);
      adjacency_List(A, B);
   }
   List.forEach(value => {
      console.log(value.length ? value.join(' ') : -1);
   });
});
hogeちゃんの画像

隣接リスト…頂点 i と辺で直接つながっている頂点を並べたもの。
無向グラフ…辺に向きがつけられていないグラフ。

【STEP: 2】コード

reader.on('close', () => {
   function adjacency_List(a, b) {
      List[a].push(b + 1);
      // List[b].push(a + 1);
   }
   const List = [];  // 隣接リスト
   const [N, M] = lines[0].split(' ').map(Number);
   for (let i = 0; i < N; i++) {
      List.push([]);
   }
   for (let i = 1; i <= M; i++) {
      const [A, B] = lines[i].split(' ').map(e => e - 1);
      adjacency_List(A, B);
   }
   List.forEach(value => {
      console.log(value.length ? value.join(' ') : -1);
   });
});
hogeちゃんの画像

有向グラフ…辺に向きがつけられてるグラフ。

【FINAL】コード

reader.on('close', () => {
   function adjacency_List(a, b, w) {
      List[a].push(w);
   }
   const List = [];  // 隣接リスト
   const [N, M] = lines[0].split(' ').map(Number);
   for (let i = 0; i < N; i++) {
      List.push([]);
   }
   for (let i = 1; i <= M; i++) {
      const [A, B, W] = lines[i].split(' ').map(Number);
      adjacency_List(A - 1, B - 1, W);
   }
   List.forEach(value => {
      console.log(value.length ? value.join(' ') : -1);
   });
});
hogeちゃんの画像

重みつき有向グラフ…辺に 重み と呼ばれる数がつけられた有向グラフ。

コメント