답안 #256871

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
256871 2020-08-03T10:47:43 Z TeaTime 공장들 (JOI14_factories) C++17
컴파일 오류
0 ms 0 KB
//#include "factories.h"
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <random>
#include <chrono>
#include <tuple>
#include <random>
#include <cmath>

using namespace std;

typedef long long ll;
typedef long double ld;
#define fastInp cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);

const ll SZ = 5e5 + 10, INF = 1e9;
int sizes[SZ], x[SZ], y[SZ];
bool used[SZ];
vector<vector<pair<ll, ll>>> vec;

vector<vector<pair<ll, ll>>> gr;
ll curC = 0;
vector<ll> bst;
set<ll> u;

ll sz(int v, int dist = 0, int par = -1) {
	ll s = 1;
	vec[v].push_back({ curC, dist });

	for (auto to : gr[v]) {
		if (!used[to.first] && to.first != par) {
			s += sz(to.first, dist + to.second, v);
		}
	}

	sizes[v] = s;
	return s;
}

ll cntr(int v, int c, int par = -1) {
	for (auto to : gr[v]) {
		if (to.first != par && !used[to.first] && sizes[to.first] >= c / 2) {
			return cntr(to.first, c, v);
		}
	}

	return v;
}

void decomp(int v) {
	used[v] = 1;
	curC = v;
	sz(v);

	for (auto to : gr[v]) {
		if (!used[to.first]) {
			decomp(cntr(to.first, sizes[to.first]));
		}
	}
}

void Init(int N, int A[], int B[], int D[]) {
	gr.resize(N);
	vec.resize(N);
	for (int i = 0; i < N - 1; i++) {
		gr[A[i]].push_back({ B[i], D[i] });
		gr[B[i]].push_back({ A[i], D[i] });
	}

	bst.resize(N);
	for (auto &c : bst) c = INF;
	decomp(0);
}

long long Query(int S, int X[], int T, int Y[]) {
	for (int i = 0; i < S; i++) {
		ll ind = X[i];
		for (auto cur : vec[ind]) {
			u.insert(cur.first);
			bst[cur.first] = min(bst[cur.first], cur.second);
		}
	}

	ll ans = INF;
	for (int i = 0; i < T; i++) {
		ll ind = Y[i];
		for (auto cur : vec[ind]) {
			ans = min(ans, bst[cur.first] + cur.second);
		}
	}
	for (auto cur : u) bst[cur] = INF;
	u.clear();
	return ans;
}

int main()
{
	fastInp;

	ll n, q;
	cin >> n >> q;

	vec.resize(n);
	gr.resize(n);
	for (int i = 0; i < n - 1; i++) {
		ll u, v, d;
		cin >> u >> v >> d;
		gr[u].push_back({ v, d });
		gr[v].push_back({ u, d });
	}

	decomp(0);
	bst.resize(n);
	for (auto &c : bst) c = INF;


	while (q--) {
		ll s, t;
		cin >> s >> t;
		for (int i = 0; i < s; i++) cin >> x[i];
		for (int i = 0; i < t; i++) cin >> y[i];
		cout << Query(s, x, t, y) << "\n";
	}

	return 0;
}

Compilation message

/tmp/ccbEbotI.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccRD3dUD.o:factories.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status