結果
| 問題 | No.317 辺の追加 |
| コンテスト | |
| ユーザー |
tjake
|
| 提出日時 | 2015-12-10 13:18:11 |
| 言語 | Python2 (2.7.18) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,299 bytes |
| コンパイル時間 | 181 ms |
| コンパイル使用メモリ | 7,068 KB |
| 実行使用メモリ | 31,648 KB |
| 最終ジャッジ日時 | 2024-09-15 07:28:58 |
| 合計ジャッジ時間 | 6,083 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 2 TLE * 1 -- * 35 |
ソースコード
from collections import deque
from sys import stdin, stdout
readline = stdin.readline
inputs = lambda: map(int, readline().split())
n, m = inputs()
g = [[] for i in xrange(n)]
for i in xrange(m):
u, v = inputs()
u -= 1; v -= 1
g[u].append(v)
g[v].append(u)
cs = []
used = [0]*n
for i in xrange(n):
if not used[i]:
deq = deque()
used[i] = 1
cnt = 1
deq.append(i)
while deq:
v = deq.popleft()
for t in g[v]:
if not used[t]:
used[t] = 1
deq.append(t)
cnt += 1
cs.append(cnt)
cs.sort()
m = []
p = cs[0]
e = 0
for c in cs:
if p==c:
e += 1
else:
m.append((p, e))
p = c
e = 1
m.append((p, e))
dp = [n]*(n+1)
dp[0] = -1
deq = deque()
for i, c in m:
for a in xrange(i):
deq.clear()
j = 0
while j*i+a<=n:
val = dp[j*i+a] - j
while deq and deq[-1][1] >= val:
deq.pop()
deq.append((j, val))
u, v = deq[0]
dp[j*i+a] = v + j
if u==j-c:
deq.popleft()
j += 1
for i in xrange(1,n+1):
if dp[i]==n: dp[i] = -1
stdout.write("\n".join(map(str, dp[1:])) + "\n")
tjake