結果
| 問題 | No.416 旅行会社 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-29 21:32:07 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 707 ms / 4,000 ms |
| コード長 | 862 bytes |
| 記録 | |
| コンパイル時間 | 145 ms |
| コンパイル使用メモリ | 85,656 KB |
| 実行使用メモリ | 158,264 KB |
| 最終ジャッジ日時 | 2026-05-29 21:32:19 |
| 合計ジャッジ時間 | 10,371 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge3_1 |
| 純コード判定待ち |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 21 |
ソースコード
def aa(m):
c=[]
while m!=uf[m]:
c.append(m);m=uf[m]
for i in c:
uf[i]=m
return m
def bb(a,b,k):
a,b=aa(a),aa(b);c=aa(0)
if a==b:
return
if c==a or b==c:
for i in list(y[a]):
ans[i]=k
for i in list(y[b]):
ans[i]=k
y[a]=set();y[b]=set();uf[a]=b
return
if len(y[a])<len(y[b]):
a,b=b,a
for i in list(y[b]):
y[a].add(i)
uf[b]=a
n,m,q=map(int,input().split())
s=set([tuple(map(int,input().split())) for i in range(m)])
x=[];ans=[0]*n
for i in range(q):
a,b=map(int,input().split())
s.discard((a,b))
x.append((a,b))
uf=[i for i in range(n)]
y=[set([i]) for i in range(n)]
while s:
a,b=s.pop()
a-=1;b-=1
bb(a,b,-1)
for i in range(q-1,-1,-1):
bb(x[i][0]-1,x[i][1]-1,i+1)
for i in ans[1:]:
print(i)