제출 #62030

#제출 시각아이디문제언어결과실행 시간메모리
62030Darksinian공장들 (JOI14_factories)C++14
0 / 100
20 ms2976 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...