結果
| 問題 |
No.1553 Lovely City
|
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2021-06-18 22:08:40 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,291 bytes |
| コンパイル時間 | 512 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 104,648 KB |
| 最終ジャッジ日時 | 2024-06-22 20:32:18 |
| 合計ジャッジ時間 | 33,452 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 1 WA * 22 RE * 3 |
ソースコード
import sys
sys.setrecursionlimit(10**7)
def main():
N,M = map(int,input().split())
Q = []
S = set([])
for i in range(M):
U,V = map(int,input().split())
Q.append((U,V))
S.add(U)
S.add(V)
L = list(S)
n = len(S) #出てくる頂点の種類
L.sort()
dic = {} #元の番号→座圧後の番号
revdic = {} #座圧後の番号→元の番号
for i in range(n):
dic[L[i]] = i
revdic[i] = L[i]
ALL = [i for i in range(n)]
ALL = set(ALL)
G = [[] for _ in range(n)]
for u,v in Q:
uz = dic[u]
vz = dic[v]
G[uz].append(vz)
ALL.discard(vz)
used = set([])
TS = []
def dfs(v):
if v in used:
return
used.add(v)
for w in G[v]:
if w in used:
continue
dfs(w)
TS.append(w) #帰りがけで記録
for root in ALL: #すべての始点について
dfs(root)
TS.append(root)
TS.reverse() #最後に反転
#print(TS)
print(n-1) #何本か?
for i in range(n-1):
s = TS[i]
t = TS[i+1]
sori = revdic[s]
tori = revdic[t]
ret = [sori, tori]
print(*ret)
if __name__ == '__main__':
main()
ygd.