提出 #7760377


ソースコード 拡げる

import sys
readline = sys.stdin.readline
readlines = sys.stdin.readlines
sys.setrecursionlimit(10 ** 7)

from scipy.sparse import csr_matrix
from scipy.sparse.csgraph import connected_components
import numpy as np
from collections import defaultdict

N,M = map(int,readline().split())

if M == 0:
    print(-1)
    exit()

AB = [tuple(int(x) for x in line.split()) for line in readlines()]

A,B = zip(*AB)
graph = csr_matrix(([1]*M,(A,B)),(N+1,N+1))
_,comp = connected_components(graph,connection='strong')

size = np.bincount(comp)

if size.max() == 1:
    print(-1)
    exit()

n = np.where(size > 1)[0][0]

V = set(np.where(comp == n)[0])

graph = [[] for _ in range(N+1)]
for a,b in AB:
    if a in V and b in V:
        graph[a].append(b)

# とりあえず1つサイクルを見つける
order = defaultdict(int)
x = V.pop()
V.add(x)
q = [x]
order[x] = 1
path = [x]
flag = False
while True:
    y = graph[x][0]
    if order[y] != 0:
        path = path[order[y]-1:]
        break
    path.append(y)
    order[y] = order[x] + 1
    x = y

V = set(path)
next_v = {u:v for u,v in zip(path,path[1:])}; next_v[path[-1]] = path[0]

# 辺を1つ追加しながら、小さいサイクルを見つける
for a,b in AB:
    if not (a in V and b in V):
        continue
    # 間の頂点を削除
    x = next_v[a]
    while x != b:
        V.remove(x)
        x = next_v[x]
    next_v[a] = b

print(len(V))
print(*V,sep='\n')

提出情報

提出日時
問題 F - Pure
ユーザ maspy
言語 Python (3.4.3)
得点 600
コード長 1496 Byte
結果 AC
実行時間 231 ms
メモリ 17168 KiB

ジャッジ結果

セット名 Sample Subtask1
得点 / 配点 0 / 0 600 / 600
結果
AC × 3
AC × 33
セット名 テストケース
Sample Sample_01.txt, Sample_02.txt, Sample_03.txt
Subtask1 Sample_01.txt, Sample_02.txt, Sample_03.txt, case_01.txt, case_02.txt, case_03.txt, case_04.txt, case_05.txt, case_06.txt, case_07.txt, case_08.txt, case_09.txt, case_10.txt, case_11.txt, case_12.txt, case_13.txt, case_14.txt, case_15.txt, case_16.txt, case_17.txt, case_18.txt, case_19.txt, case_20.txt, case_21.txt, case_22.txt, case_23.txt, case_24.txt, case_25.txt, case_26.txt, case_27.txt, case_28.txt, case_29.txt, case_30.txt
ケース名 結果 実行時間 メモリ
Sample_01.txt AC 231 ms 17168 KiB
Sample_02.txt AC 165 ms 13752 KiB
Sample_03.txt AC 169 ms 13880 KiB
case_01.txt AC 172 ms 14136 KiB
case_02.txt AC 172 ms 14136 KiB
case_03.txt AC 171 ms 14136 KiB
case_04.txt AC 173 ms 14136 KiB
case_05.txt AC 171 ms 14136 KiB
case_06.txt AC 172 ms 14136 KiB
case_07.txt AC 173 ms 14136 KiB
case_08.txt AC 173 ms 14136 KiB
case_09.txt AC 171 ms 14136 KiB
case_10.txt AC 172 ms 14136 KiB
case_11.txt AC 168 ms 14136 KiB
case_12.txt AC 169 ms 14136 KiB
case_13.txt AC 169 ms 14136 KiB
case_14.txt AC 169 ms 14136 KiB
case_15.txt AC 170 ms 14136 KiB
case_16.txt AC 165 ms 13624 KiB
case_17.txt AC 164 ms 13624 KiB
case_18.txt AC 171 ms 14008 KiB
case_19.txt AC 170 ms 14264 KiB
case_20.txt AC 170 ms 14264 KiB
case_21.txt AC 170 ms 14264 KiB
case_22.txt AC 172 ms 14264 KiB
case_23.txt AC 173 ms 14264 KiB
case_24.txt AC 171 ms 14264 KiB
case_25.txt AC 171 ms 14384 KiB
case_26.txt AC 171 ms 14436 KiB
case_27.txt AC 170 ms 14392 KiB
case_28.txt AC 170 ms 14392 KiB
case_29.txt AC 171 ms 14392 KiB
case_30.txt AC 170 ms 14200 KiB