結果
| 問題 |
No.2638 Initial fare
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-02-19 21:29:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,488 ms / 2,000 ms |
| コード長 | 787 bytes |
| コンパイル時間 | 326 ms |
| コンパイル使用メモリ | 82,584 KB |
| 実行使用メモリ | 414,148 KB |
| 最終ジャッジ日時 | 2024-09-29 01:24:57 |
| 合計ジャッジ時間 | 11,887 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 25 |
ソースコード
import sys
sys.setrecursionlimit(500000)
def input():
return sys.stdin.readline()[:-1]
N = int(input())
e_list = [[] for i in range(N)]
for i in range(N-1):
u,v = list(map(int,input().split()))
u,v = u-1,v-1
e_list[u].append(v)
e_list[v].append(u)
depth = [0]*N
par = [-1]*N
chnum = [0]*N
ans = 0
def dfs(v):
global ans
ccsum = 0
for v1 in e_list[v]:
if par[v] != v1:
depth[v1] = depth[v] + 1
par[v1] = v
chnum[v] += 1
ans += 1
dfs(v1)
ccsum += chnum[v1]
for v1 in e_list[v]:
if par[v] != v1:
ans += ccsum - chnum[v1]
ans += chnum[v] * (chnum[v] - 1) // 2
ans += ccsum
if depth[v] >= 3:
ans += 1
dfs(0)
print(ans)