結果
問題 | No.2780 The Bottle Imp |
ユーザー |
👑 ![]() |
提出日時 | 2024-06-03 19:21:59 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 456 ms / 2,000 ms |
コード長 | 1,349 bytes |
コンパイル時間 | 692 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 61,072 KB |
最終ジャッジ日時 | 2024-12-27 13:32:26 |
合計ジャッジ時間 | 9,525 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 40 |
ソースコード
import sys input = sys.stdin.readline sys.setrecursionlimit(2000000) def read_values(): return tuple(map(int, input().split())) def read_list(): return list(read_values()) def scc(N, G, RG): order = [] used = [0]*N group = [None]*N def dfs(s): used[s] = 1 for t in G[s]: if not used[t]: dfs(t) order.append(s) def rdfs(s, col): group[s] = col used[s] = 1 for t in RG[s]: if not used[t]: rdfs(t, col) for i in range(N): if not used[i]: dfs(i) used = [0]*N label = 0 for s in reversed(order): if not used[s]: rdfs(s, label) label += 1 return label, group def main(): n = int(input()) g = [list() for _ in range(n)] rg = [list() for _ in range(n)] for i in range(n): a = read_list() for j in range(1,a[0]+1): g[i].append(a[j]-1) rg[a[j]-1].append(i) r,res = scc(n,g,rg) if res[0]: print("No") return l = [False] * r l[-1] = True for i in range(n): lab = res[i] for v in g[i]: l[lab] |= lab + 1 == res[v] if all(l): print("Yes") else: print("No") if __name__ == "__main__": main()