公式
A - 電力不足の都市 / City with Power Shortage 解説
by
A - 電力不足の都市 / City with Power Shortage 解説
by
kyopro_friends
ある都市に供給可能な電力量の定義は、その都市を端点とする送電線の容量の合計でした。
都市ごとに求めるのではなく「送電線を張るごとに、その両端の都市に供給可能な電力量が増える」と考えることで、送電線のない状態から始めて、各都市に現時点で供給可能な電力量を更新していけばよいです。
計算量は \(O(N+M)\) となります。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<int> s(n);
for(int i=0; i<n; i++) cin >> s[i];
vector<long long> t(n);
for(int i=0; i<m; i++){
int u, v, w;
cin >> u >> v >> w;
u--, v--;
t[u] += w;
t[v] += w;
}
int ans = 0;
for(int i=0; i<n; i++){
if(t[i] < s[i]){
ans++;
}
}
cout << ans << endl;
}
実装例 (Python)
N, M = map(int, input().split())
S = list(map(int, input().split()))
T = [0] * N
for _ in range(M):
U, V, W = map(int, input().split())
U -= 1
V -= 1
T[U] += W
T[V] += W
ans = 0
for i in range(N):
if T[i] < S[i]:
ans+=1
print(ans)
投稿日時:
最終更新:
