結果
| 問題 |
No.2403 "Eight" Bridges of Königsberg
|
| コンテスト | |
| ユーザー |
FromBooska
|
| 提出日時 | 2023-08-05 11:45:22 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 947 bytes |
| コンパイル時間 | 323 ms |
| コンパイル使用メモリ | 82,364 KB |
| 実行使用メモリ | 86,844 KB |
| 最終ジャッジ日時 | 2024-10-15 08:50:18 |
| 合計ジャッジ時間 | 5,073 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 10 WA * 21 |
ソースコード
# 頂点すべてに達するのではなく辺すべてに達する(使う)
# まず多重辺は打ち消しあう分を消そう、いらないから
# 自己ループも消そう、いらないから
# それから、辺が何本の線になっているか
# degreeをinward, outwardで数えるか
# outward-inwardでプラスをすべて数えればそれが線の数
# 答えはそこから1を引けばいいか、やってみよう
N, M = map(int, input().split())
edges = [set() for i in range(N+1)]
for i in range(M):
u, v = map(int, input().split())
if u == v:
continue
if u in edges[v]:
edges[v].discard(u)
else:
edges[u].add(v)
inward = [0]*(N+1)
outward = [0]*(N+1)
for i in range(1, N+1):
outward[i] += len(edges[i])
for nxt in edges[i]:
inward[nxt] += 1
count = 0
for i in range(1, N+1):
count += max(0, outward[i]-inward[i])
ans = count-1
print(ans)
FromBooska