結果

問題 No.1640 簡単な色塗り
ユーザー tonyu0
提出日時 2022-09-22 11:02:37
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 1,521 ms / 2,000 ms
コード長 2,075 bytes
コンパイル時間 101 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 132,648 KB
最終ジャッジ日時 2024-12-22 04:46:30
合計ジャッジ時間 42,746 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 51 TLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

n=int(input())
g=[[]for _ in range(n)]
par = [-1]*n
def root(x):
if par[x]<0:return x
r=root(par[x])
par[x]=r
return r
def same(x,y):
return root(x)==root(y)
def merge(x, y):
if same(x,y):return
x=root(x)
y=root(y)
if par[x]>par[y]:
x,y=y,x
par[x]+=par[y]
par[y]=x
for i in range(n):
a,b=map(int,input().split())
a-=1
b-=1
g[a].append([b,i])
g[b].append([a,i])
merge(a, b)
#
# V=E
# V==EV!=E-1()
# V==EV!=E-1
#
#
vss=[[]for _ in range(n)]
for i in range(n):
vss[root(i)].append(i)
ans=[0]*n
deg=[0]*n #
used=[0]*n # 使
for vs in vss:
if vs==[]:continue
# V==E
V=len(vs)
ids=set()
for v in vs:
for nv,i in g[v]:
ids.add(i)
deg[nv]+=1
E=len(ids)
if V!=E:
print('No')
exit()
q=[]
for v in vs:
if deg[v]==1: #
q.append(v)
for v in q:
for nv, i in g[v]:
if used[i]==0:
used[i]=1
ans[i]=v
deg[nv]-=1
if deg[nv]==1:
q.append(nv)
#
for s in vs:
if deg[s]>1:
# cycle
r=[s]
for v in r:
for nv, i in g[v]:
if used[i]==0:
used[i]=1
ans[i]=v
r.append(nv)
break
break
print('Yes')
for x in ans:
print(x+1)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0