This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "factories.h"
#include<bits/stdc++.h>
using namespace std;
long long dp[100002][3];
int c[100002];
int n;
vector<pair<int,int> > g[100002];
void dfs(int s,int p) {
dp[s][1] = 1e17;
dp[s][2] = 1e17;
if(c[s]) dp[s][c[s]] = 0;
for(auto u : g[s]) {
int u1 = u.first;
if(u1!=p) {
dfs(u1,s);
dp[s][1] = min(dp[s][1],dp[u1][1] + u.second);
dp[s][2] = min(dp[s][2],dp[u1][2] + u.second);
}
}
}
void Init(int N, int A[], int B[], int D[]) {
n = N;
for(int i =0;i<N;i++){
g[A[i]].push_back({B[i],D[i]});
g[B[i]].push_back({A[i],D[i]});
}
}
long long Query(int S, int X[], int T, int Y[]) {
for(int i =0;i<S;i++) {
c[X[i]] = 1;
}
for(int i =0;i<T;i++){
c[Y[i]] = 2;
}
dfs(0,0);
for(int i =0;i<n;i++) c[i] = 0;
long long ans = 1e18;
for(int i =0;i<n;i++) ans = min(ans,dp[i][1] + dp[i][2]);
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |