提出 #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')
提出情報
ジャッジ結果
| セット名 | Sample | Subtask1 | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 600 / 600 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |