回答編集履歴
1
a
test
CHANGED
@@ -93,3 +93,45 @@
|
|
93
93
|
|
94
94
|
|
95
95
|
![イメージ説明](f61192a181a6ebb1195c05d1d3db3b62.png)
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
## 追記
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
標準ライブラリのみを使った隣接リスト作成の例
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
```python
|
108
|
+
|
109
|
+
edges = [(1, 2), (2, 1), (1, 4), (4, 1), (2, 4), (4, 2),
|
110
|
+
|
111
|
+
(4, 3), (3, 4), (4, 5), (5, 4), (3, 5), (5, 3)]
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
adj_list = {}
|
116
|
+
|
117
|
+
from itertools import groupby
|
118
|
+
|
119
|
+
for key, group in groupby(sorted(edges), key=lambda x: x[0]):
|
120
|
+
|
121
|
+
conn_to = [g[1] for g in group] # edge=key が接続しているノード一覧
|
122
|
+
|
123
|
+
adj_list[key] = conn_to
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
print(adj_list)
|
128
|
+
|
129
|
+
```
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
```
|
134
|
+
|
135
|
+
{1: [2, 4], 2: [1, 4], 3: [4, 5], 4: [1, 2, 3, 5], 5: [3, 4]}
|
136
|
+
|
137
|
+
```
|