結果
問題 |
No.3056 Disconnected Coloring
|
ユーザー |
![]() |
提出日時 | 2025-03-17 16:27:22 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,294 bytes |
コンパイル時間 | 399 ms |
コンパイル使用メモリ | 82,908 KB |
実行使用メモリ | 67,956 KB |
最終ジャッジ日時 | 2025-03-17 16:27:36 |
合計ジャッジ時間 | 12,413 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 2 |
other | RE * 34 |
ソースコード
from atcoder import dsu from collections import deque def bfs(s): dq = deque() dq.append([s, 0]) high = [10**9 for _ in range(N)] high[s] = 0 while len(dq) != 0: p, h = dq.popleft() for e in edge[p]: if high[e] == 10**9: dq.append([e, h + 1]) high[e] = h + 1 return high """ 基本的には 1に繋がってる辺を青 Nに繋がってる辺を赤にしたい。 どちらかが多くて塗り分けられなかった場合 M//2本以上1かNに繋がっている。 """ N,M=map(int,input().split()) ans=[[] for _ in range(M)] edge=[[] for _ in range(N)] edges=[] for i in range(M): a,b=map(int,input().split()) edge[a-1].append((b-1,i)) edge[b-1].append((a-1,i)) edges.append((a-1,b-1,i)) if M%2==1: print(-1) exit() uf=dsu.DSU(N) uf2=dsu.DSU(N) for a,b,i in edges: if 0 not in {a,b}: uf.merge(a,b) if N-1 not in {a,b}: uf2.merge(a,b) for e,i in edge[0]: if uf.same(e,N-1): ans[i]="B" for e,i in edge[N-1]: if uf.same(e,N-1): ans[i]="R" b_count=ans.count("B") for i in range(len(ans)): if ans[i]==[]: if b_count<M//2: b_count+=1 ans[i]="B" else: ans[i]="R" print("".join(ans))