ARC037 B - バウムテスト
https://atcoder.jp/contests/arc037/tasks/arc037_b
提出
code: python
n, m = map(int, input().split())
uv = list(map(int, input().split())) for _ in range(m)
graph = [[] for _ in range(n+1)]
for i in uv:
graph[i0].append(i1)
graph[i1].append(i0)
# 閉路が含まれる -> 3つ以上で循環
# 循環している ->
for i in graph:
for j in i:
graphj
解答
code: python
from collections import deque
n, m = list(map(int, input().split()))
uv = list(map(int, input().split())) for _ in range(m)
U = []
V = []
for u, v in uv:
u -= 1
v -= 1
U.append(u)
V.append(v)
# print(U)
# print(V)
# 0, 1, 1, 4, 5, 5, 6
# 1, 2, 3, 5, 6, 7, 7
ans = 0
visited = set()
def dfs(i):
que = deque()
que.append(i)
flag = True
while que:
now = que.pop()
if now in visited: # 探索済み頂点をpopしたら閉路
flag = False
else:
visited.add(now)
for j in range(m):
# つながっていて未探索の頂点ならpush
if Uj == now and Vj not in visited:
que.append(Vj)
elif Vj == now and Uj not in visited:
que.append(Uj)
# 頂点iからの探索を終えたとき閉路があるかを返す
return flag
for l in range(n):
if l not in visited:
if dfs(l):
ans += 1
print(ans)
code: python
from collections import defaultdict
from collections import deque
n, m = list(map(int, input().split()))
uv = list(map(int, input().split())) for _ in range(m)
d = defaultdict(list)
for u, v in uv:
du.append(v)
dv.append(u)
# print(d)
# {1: 2, 2: 1, 3, 4, 3: 2, 4: 2, 5: 6, 6: 5, 7, 8, 7: 6, 8, 8: 6, 7}
ans = 0
visited = set()
def dfs(i):
que = deque()
que.append(i)
flag = True
while que:
now = que.pop()
if now in visited: # 探索済み頂点をpopしたら閉路
flag = False
else:
visited.add(now)
for n in dnow:
if n not in visited:
que.append(n)
# 頂点iからの探索を終えたとき閉路があるかを返す
return flag
for l in range(1, n+1):
if l not in visited:
if dfs(l):
ans += 1
print(ans)
テーマ
#dfs #graph
蟻本 2-1 Lake Counting
メモ
【AtCoder版!蟻本】ARC 037 B - バウムテスト【深さ優先探索】
提出
code: python
from collections import defaultdict
from collections import deque
n, m = list(map(int, input().split()))
uv = list(map(int, input().split())) for _ in range(m)
d = defaultdict(list)
for u, v in uv:
du.append(v)
dv.append(u)
# print(d)
# {1: 2, 2: 1, 3, 4, 3: 2, 4: 2, 5: 6, 6: 5, 7, 8, 7: 6, 8, 8: 6, 7}
visited = set()
q = deque()
q.append(d[uv00])
while q:
now = q.popleft()
for i in now:
if i in visited:
continue
else:
visited.add(i)
q.append(di)
print(visited)