feat: new graph problem formatted.

This commit is contained in:
2026-05-25 19:53:45 -03:00
parent 8785966987
commit 4d583f8d8c
232 changed files with 10308 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
from collections import deque
def check_connectivity(adj, n):
vis = [False for _ in range(n)]
def dfs(x):
vis[x] = True
for v in adj[x]:
if not vis[v]:
dfs(v)
dfs(0)
return all(vis)
def check_cthulhu(adj, degree, n):
marked = [False for _ in range(n)]
dq = deque([])
for i, d in enumerate(degree):
if d == 1:
dq.append(i)
marked[i] = True
while len(dq) != 0:
i = dq.popleft()
for v in adj[i]:
if not marked[v]:
degree[v] -= 1
if degree[v] == 1:
dq.append(v)
marked[v] = True
# if all are marked it means that there was no cycle
if all(marked):
return False
# if some of the non-marked vertices does not have degree 2, it is not a simple cycle
for v in range(n):
if not marked[v] and degree[v] != 2:
return False
return True
n, m = map(int, input().split())
adj = [[] for _ in range(n)]
degree = [0] * n
for i in range(m):
u, v = map(int, input().split())
u -= 1
v -= 1
adj[u].append(v)
adj[v].append(u)
degree[u] += 1
degree[v] += 1
if not check_connectivity(adj, n) or not check_cthulhu(adj, degree, n):
print("OFFLINE")
else:
print("ONLINE")