回答編集履歴

3

greedy内では経路を表示していないので表現変更

2023/07/25 21:41

投稿

actorbug
actorbug

スコア2479

test CHANGED
@@ -4,7 +4,7 @@
4
4
  `circuit`は隣接行列なので、隣接リストを前提とした`dfs`にそのまま渡しても、正常に動作しません。隣接行列を前提としたコードに書き換えましょう。
5
5
  2. **valid内で、閉路があったら 1 を、閉路が無かったら 0 を返している**
6
6
  現状だと、`dfs`が 1 を返したら、つまり、閉路があったら 1 を返し、逆に閉路が無かったら 0 を返しています。「条件2.すべての点を回らないような閉路はつくらない」なので、0 を返すべきなのは「すべての点を回らない閉路」があった場合のみです。
7
- 3. **greedy内で、見つかった辺の始点を順番に並べたものを経路として表示している**
7
+ 3. **greedy内で、見つかった辺の始点を順番に並べたものを経路としてしている**
8
8
  今回のテストデータだと、1-3, 0-3, 1-4, 0-2, 2-4の順番で辺が見つかるので、辺の始点を並べても 1->0->1->0->2 になってしまいます。0から改めて経路をたどるなどしてください。
9
9
 
10
10
  これらの問題を修正したところ、正しい経路が表示されるようになりました。

2

mainのメモリ確保を見落としていたので追加

2023/07/25 21:32

投稿

actorbug
actorbug

スコア2479

test CHANGED
@@ -9,4 +9,4 @@
9
9
 
10
10
  これらの問題を修正したところ、正しい経路が表示されるようになりました。
11
11
 
12
- あと、経路の正しさに直接は関係ありませんが、`degree`内で`malloc`を使って確保したメモリを`free`していないのもNGです。
12
+ あと、経路の正しさに直接は関係ありませんが、`degree`や`main`内で`malloc`を使って確保したメモリを`free`していないのもNGです。

1

freeしていない問題も追加で指摘

2023/07/25 20:46

投稿

actorbug
actorbug

スコア2479

test CHANGED
@@ -8,3 +8,5 @@
8
8
  今回のテストデータだと、1-3, 0-3, 1-4, 0-2, 2-4の順番で辺が見つかるので、辺の始点を並べても 1->0->1->0->2 になってしまいます。0から改めて経路をたどるなどしてください。
9
9
 
10
10
  これらの問題を修正したところ、正しい経路が表示されるようになりました。
11
+
12
+ あと、経路の正しさに直接は関係ありませんが、`degree`内で`malloc`を使って確保したメモリを`free`していないのもNGです。