Submission #1531198


Source Code Expand

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>
#include <fstream>
#include <bitset>
#include <time.h>
#include <tuple>

using namespace std;

typedef long long ll;
typedef pair<ll, ll> P;
typedef vector<ll> V;
typedef complex<double> Point;

#define PI acos(-1.0)
#define EPS 1e-10
const ll INF = (1LL << 60) - 1;
const ll MOD = 1e9 + 7;

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define rep(i,N) for(int i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define EQ(a,b) (abs((a)-(b))<EPS)
#define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) )
#define fi first
#define se second
#define N_SIZE (1LL << 20)
#define NIL -1
#define MAX_N 100100 * 3

int n;
int q, k;

class DK {
public:
	struct edge {
		int to;
		ll cost;
	};

	int prev[100010];
	ll d[100010];
	vector<edge> G[100010];//各頂点からの辺

	void dijkstra(int start) {
		fill(d, d + 100010, INF);
		d[start] = 0;
		fill(prev, prev + 100010, -1);

		priority_queue<P, vector<P>, greater<P>> que;
		que.push(P(0, start));

		while (!que.empty()) {
			P p = que.top();
			que.pop();
			int v = p.second;
			if (d[v] < p.first)continue;
			for (int i = 0; i < G[v].size(); i++) {
				edge e = G[v][i];
				if (d[e.to] > d[v] + e.cost) {
					d[e.to] = d[v] + e.cost;
					prev[e.to] = v;
					que.push(P(d[e.to], e.to));
				}
			}
		}
	}

	vector<int> get_path(int goal) {
		vector<int> path;
		for (int t = goal; t != -1; t = prev[t]) {
			path.push_back(t);
		}//このままでは逆順なのでひっくり返す
		reverse(ALL(path));
		return path;
	}
};

DK dk;

int main() {
	cin >> n;
	rep(i, n - 1) {
		int a, b, c;
		cin >> a >> b >> c;
		dk.G[a].push_back({ b,c });
		dk.G[b].push_back({ a,c });
	}
	cin >> q >> k;
	dk.dijkstra(k);
	rep(i, q) {
		int x, y;
		cin >> x >> y;
		cout << dk.d[x] + dk.d[y] << endl;
	}
}

Submission Info

Submission Time
Task D - Transit Tree Path
User jimmy
Language C++14 (GCC 5.4.1)
Score 400
Code Size 2154 Byte
Status AC
Exec Time 345 ms
Memory 11504 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 31
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
Case Name Status Exec Time Memory
sample_01.txt AC 3 ms 3712 KB
sample_02.txt AC 3 ms 3712 KB
sample_03.txt AC 3 ms 3712 KB
subtask_1_1.txt AC 3 ms 3712 KB
subtask_1_10.txt AC 130 ms 4480 KB
subtask_1_11.txt AC 4 ms 3712 KB
subtask_1_12.txt AC 14 ms 3840 KB
subtask_1_13.txt AC 44 ms 3968 KB
subtask_1_14.txt AC 3 ms 3712 KB
subtask_1_15.txt AC 9 ms 4096 KB
subtask_1_16.txt AC 345 ms 10368 KB
subtask_1_17.txt AC 341 ms 10368 KB
subtask_1_18.txt AC 340 ms 10368 KB
subtask_1_19.txt AC 345 ms 10368 KB
subtask_1_2.txt AC 4 ms 3840 KB
subtask_1_20.txt AC 325 ms 9856 KB
subtask_1_21.txt AC 331 ms 9856 KB
subtask_1_22.txt AC 329 ms 9856 KB
subtask_1_23.txt AC 329 ms 9856 KB
subtask_1_24.txt AC 330 ms 11504 KB
subtask_1_25.txt AC 325 ms 11504 KB
subtask_1_26.txt AC 331 ms 11504 KB
subtask_1_27.txt AC 325 ms 11504 KB
subtask_1_28.txt AC 305 ms 9984 KB
subtask_1_3.txt AC 204 ms 8448 KB
subtask_1_4.txt AC 3 ms 3712 KB
subtask_1_5.txt AC 180 ms 4864 KB
subtask_1_6.txt AC 34 ms 4480 KB
subtask_1_7.txt AC 151 ms 4608 KB
subtask_1_8.txt AC 3 ms 3712 KB
subtask_1_9.txt AC 170 ms 9216 KB