結果
問題 | No.1582 Vertexes vs Edges |
ユーザー | ygd. |
提出日時 | 2021-07-02 23:08:51 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 231 ms / 2,000 ms |
コード長 | 1,110 bytes |
コンパイル時間 | 398 ms |
コンパイル使用メモリ | 82,120 KB |
実行使用メモリ | 97,524 KB |
最終ジャッジ日時 | 2024-06-29 12:57:47 |
合計ジャッジ時間 | 6,401 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
def main(): N = int(input()) G = [[] for _ in range(N)] for i in range(N-1): u,v = map(int,input().split()) u-=1;v-=1 G[u].append(v) G[v].append(u) #print(G) stack = [] stack.append(~0) stack.append(0) par = [-1]*N leaf = set([]) #葉っぱ bw = [-1]*N while stack: v = stack.pop() if v >= 0: cnt = 0 for u in G[v]: if u == par[v]: continue par[u] = v stack.append(~u) stack.append(u) cnt += 1 if cnt == 0: leaf.add(v) else: v = ~v if v in leaf: #葉なら常に白 bw[v] = 0 else: for u in G[v]: if bw[u] == 0: #一つでも子に白があれば黒に塗れる bw[v] = 1 break else: bw[v] = 0 #print(bw) #print(leaf) ans = sum(bw) print(ans) if __name__ == '__main__': main()