#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<array<int, 3>> edge;
int x;
bool cmp(array<int, 3> a, array<int, 3> b){
return abs(x - a[0]) < abs(x - b[0]);
}
struct DSU{
vector<int> p;
void init(int n){
p.assign(n + 2, 0);
for(int i = 1; i <= n; i++) p[i] = i;
}
int find(int u){
if(p[u] == u) return u;
else return p[u] = find(p[u]);
}
bool merge(int u, int v){
u = find(u);
v = find(v);
if(u == v) return false;
else{
p[u] = v;
return true;
}
}
} dsu;
void solve(){
int n, m; cin >> n >> m;
bool sub3 = true;
for(int i = 1; i <= m; i++){
int a, b, w; cin >> a >> b >> w;
edge.push_back({w, b, a});
if(b != a + 1) sub3 = false;
}
if(sub3){
vector<vector<int>> v(n, vector<int>(0));
for(int i = 0; i < m; i++) v[edge[i][2]].push_back(edge[i][0]);
for(int i = 1; i <= n - 1; i++) sort(v[i].begin(), v[i].end());
int q; cin >> q;
while(q--){
cin >> x;
int ans = 0;
for(int i = 1; i <= n - 1; i++){
int c = 2e9;
int pos = lower_bound(v[i].begin(), v[i].end(), x) - v[i].begin();
if(pos < v[i].size()) c = min(c, v[i][pos] - x);
if(pos != 0) c = min(c, x - v[i][pos - 1]);
ans += c;
}
cout << ans << "\n";
}
return;
}
int q; cin >> q;
while(q--){
cin >> x;
sort(edge.begin(), edge.end(), cmp);
dsu.init(n);
int ans = 0;
for(int i = 0; i < m; i++){
int u = edge[i][1], v = edge[i][2];
if(dsu.merge(u, v)){
ans += abs(x - edge[i][0]);
}
}
cout << ans << "\n";
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
// freopen("RAILROAD.INP", "r", stdin);
// freopen("RAILROAD.OUT", "w", stdout);
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |