京都大学 情報学研究科 数理工学専攻 2024年8月実施 グラフ理論
标签:
Author
祭音Myyura
Description
有限集合
(i)
(ii) すべての
(iii) ある節点
(iv) ある節点
Kai
(i)
dist[v] = -1
dist[s] = 0
V_0 = {s}
queue = [s]
while queue not empty:
u = pop_front(queue)
for v in N(u):
if dist[v] == -1:
dist[v] = dist[u] + 1
add v to V_{dist[v]}
push_back(queue, v)
d_max = max dist[v]
Since graph is connected, we have
(ii)
sigma[v] = 0 for all v
sigma[s] = 1
for i = 0 to d_max - 1:
for u in V_i:
for v in N(u):
if dist[v] == dist[u] + 1:
sigma[v] += sigma[u]
(iii)
a[v] = 0 for all v
a[s] = 1
for i = 0 to d_max - 1:
for u in V_i:
for v in N(u):
if dist[v] == dist[u] + 1 and v not in U:
a[v] += a[u]
return sigma[t] - a[t]
(iv)
best[v] = -infinity for all v
best[s] = 0
for i = 0 to d_max - 1:
for u in V_i:
for v in N(u):
if dist[v] == dist[u] + 1:
gain = 1 if v in U else 0
best[v] = max(best[v], best[u] + gain)
return best[t] >= k