グラフ構造の入力メニュー【隣接リストの出力(無向グラフ)・隣接リストの出力(有向グラフ)】
【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);
});
});
隣接リスト…頂点 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);
});
});
有向グラフ…辺に向きがつけられてるグラフ。
【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);
});
});
重みつき有向グラフ…辺に 重み と呼ばれる数がつけられた有向グラフ。
コメント