ดาวน์โหลดแอป
เลือกโฟลเดอร์และให้ผู้ช่วยอ่านไฟล์ที่เกี่ยวข้องก่อนแก้ไข ระบุเป้าหมายและขอบเขตของงานให้ชัดเจน
แบ่งกราฟมีทิศทางที่มีจุดยอดไม่เกิน 64 จุดเป็นส่วนประกอบเชื่อมโยงอย่างเข้ม. ทดสอบวงจร จุดยอดโดดเดี่ยวและอินพุตว่าง พร้อมปฏิเสธสมาชิกเซตที่ไม่ถูกต้องโดยไม่เปลี่ยนเซตเพื่อนบ้าน.
เลือกโฟลเดอร์และให้ผู้ช่วยอ่านไฟล์ที่เกี่ยวข้องก่อนแก้ไข ระบุเป้าหมายและขอบเขตของงานให้ชัดเจน
เลือก endpoint ที่เข้ากันได้ เครื่องมือที่ใช้ได้และคุณภาพคำตอบขึ้นอยู่กับโมเดลและเซิร์ฟเวอร์ที่ตั้งค่า
ตรวจสอบการแก้ไขและผลลัพธ์คำสั่ง รันการตรวจสอบของโปรเจกต์ก่อนยอมรับผล โค้ดที่สร้างขึ้นไม่ได้ผ่านการทดสอบโดยอัตโนมัติ
เปรียบเทียบการทำงานจริงกับผลที่คาดหวัง หากการตรวจสอบไม่ผ่าน ให้หาสาเหตุก่อนแก้ไขเพิ่มเติม
def strong_components(graph):
if type(graph) is not list or len(graph) > 64:
raise ValueError("scc.graph")
n = len(graph)
if any(type(row) is not set or any(type(v) is not int or not 0 <= v < n for v in row) for row in graph):
raise ValueError("scc.edge")
seen, order = set(), []
for start in range(n):
if start in seen:
continue
seen.add(start)
stack = [(start, iter(sorted(graph[start])))]
while stack:
node, edges = stack[-1]
target = next(edges, None)
if target is None:
order.append(node)
stack.pop()
elif target not in seen:
seen.add(target)
stack.append((target, iter(sorted(graph[target]))))
reverse = [set() for _ in graph]
for node, edges in enumerate(graph):
for target in edges:
reverse[target].add(node)
seen, result = set(), []
for start in reversed(order):
if start in seen:
continue
group, pending = [], [start]
seen.add(start)
while pending:
node = pending.pop()
group.append(node)
for target in reverse[node]-seen:
seen.add(target)
pending.append(target)
result.append(sorted(group))
return sorted(result)
ตรวจสอบก่อนนำไปใช้. ตรวจสอบการแก้ไขและผลลัพธ์คำสั่ง รันการตรวจสอบของโปรเจกต์ก่อนยอมรับผล โค้ดที่สร้างขึ้นไม่ได้ผ่านการทดสอบโดยอัตโนมัติ