結果
| 問題 | No.1254 補強への架け橋 | 
| コンテスト | |
| ユーザー |  titia | 
| 提出日時 | 2020-10-10 01:01:00 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 388 ms / 2,000 ms | 
| コード長 | 968 bytes | 
| コンパイル時間 | 530 ms | 
| コンパイル使用メモリ | 81,848 KB | 
| 実行使用メモリ | 145,108 KB | 
| 最終ジャッジ日時 | 2024-07-20 15:07:11 | 
| 合計ジャッジ時間 | 20,936 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 123 | 
ソースコード
N=int(input())
EDGE=[tuple(map(int,input().split())) for i in range(N)]
E=[[] for i in range(N+1)]
for x,y in EDGE:
    E[x].append(y)
    E[y].append(x)
Q=[(1,N+5)]
USE=[0]*(N+1)
FR=[-1]*(N+1)
USE[1]=1
while Q:
    x,fr=Q.pop()
    ANS=-1
    for to in E[x]:
        if fr==to:
            continue
        if USE[to]==0:
            USE[to]=1
            FR[to]=x
            Q.append((to,x))
        else:
            ANS=to
            NOW=x
            break
    if ANS!=-1:
        break
LIST0=[]
LIST1=[]
while NOW!=1:
    LIST0.append(NOW)
    NOW=FR[NOW]
while ANS!=1:
    LIST1.append(ANS)
    ANS=FR[ANS]
LIST0.append(1)
LIST1.append(1)
while LIST0[-1]==LIST1[-1]:
    x=LIST0.pop()
    y=LIST1.pop()
LIST=[x]+LIST0[::-1]+LIST1
SET=set()
for i in range(len(LIST)):
    x=LIST[i-1]
    y=LIST[i]
    SET.add((x,y))
    SET.add((y,x))
ALIST=[]
for i in range(N):
    if EDGE[i] in SET:
        ALIST.append(i+1)
print(len(ALIST))
print(*ALIST)
            
            
            
        