Submission #916902

# Submission time Handle Problem Language Result Execution time Memory
916902 2024-01-26T18:18:37 Z OAleksa Valley (BOI19_valley) C++14
59 / 100
3000 ms 40472 KB
#include <bits/stdc++.h>
//ako ovaj vaso daso misli da me pobedjuje.....
using namespace std;
#define int long long
#define f first
#define s second
const int N	= 1e5 + 69;
const int K = 18;
const int inf = 1e18;
int up[N][K];
int n, s, q, e, cnt[N], dep[N], par[N], mn[N];
int tin[N], tout[N], timer, cost[N];
vector<int> shop;
vector<pair<int, int>> g[N];
vector<tuple<int, int, int>> edges;
bool anc(int a, int b) {
	return tin[a] <= tin[b] && tout[a] >= tout[b];
}
int Lca(int a, int b) {
	if (anc(a, b))
		return a;
	else if (anc(b, a))
		return b;
	for (int i = K - 1;i >= 0;i--) {
		if (!anc(up[a][i], b) && up[a][i] > 0)
			a = up[a][i];
	}
	return up[a][0];
}
int distance(int a, int b) {
	return dep[a] + dep[b] - 2 * dep[Lca(a, b)];
}
void dfs(int v, int p) {
	tin[v] = ++timer;
	par[v] = p;
	up[v][0] = p;
	if (cnt[v])
		mn[v] = 0;
	for (int i = 1;i < K;i++)
		up[v][i] = up[up[v][i - 1]][i - 1];
	for (auto u : g[v]) {
		if (u.f == p)
			continue;
		dep[u.f] = dep[v] + u.s;
		dfs(u.f, v);
		mn[v] = min(mn[v], mn[u.f] + u.s);
	}
	tout[v] = timer;
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
  	cin >> n >> s >> q >> e;
  	for (int i = 1;i <= n;i++)
  		mn[i] = inf;
  	for (int i = 1;i <= n - 1;i++) {
  		int a, b, w;
  		cin >> a >> b >> w;
  		g[a].push_back({b, w});
  		g[b].push_back({a, w});
  		edges.push_back({a, b, w});
  	}
  	for (int i = 1;i <= s;i++) {
  		int x;
  		cin >> x;
  		cnt[x] = 1;
  		shop.push_back(x);
  	}
  	dfs(e, 0);
  	for (int j = 0;j < q;j++) {
  		int i, st;
  		cin >> i >> st;
  		--i;
  		int x, a, b, w;
  		tie(a, b, w) = edges[i];
  		if (dep[a] < dep[b])
  			swap(a, b);	
  		int ans = inf;
  		if (s == n) {
  			if (!anc(a, st) || !anc(b, st)) 
  				ans = -1;
  			else
  				ans = 0;
  		}
  		else {
  			if (!anc(a, st) || !anc(b, st)) 
  				ans = -1;
  			else {
  				int t = st;
  				while (t != b && t != 0) {
  					ans = min(ans, mn[t] + dep[st] - dep[t]);
  					t = par[t];
  				}
  			}
  		}
  		if (ans == inf)
  			cout << "oo\n";
  		else if (ans == -1)
  			cout << "escaped\n";
  		else
  			cout << ans << '\n';
  	}
	}
  return 0;
}

Compilation message

valley.cpp: In function 'int main()':
valley.cpp:78:9: warning: unused variable 'x' [-Wunused-variable]
   78 |     int x, a, b, w;
      |         ^
# Verdict Execution time Memory Grader output
1 Correct 3 ms 8796 KB Output is correct
2 Correct 3 ms 8948 KB Output is correct
3 Correct 3 ms 8796 KB Output is correct
4 Correct 3 ms 8864 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 8796 KB Output is correct
2 Correct 3 ms 8948 KB Output is correct
3 Correct 3 ms 8796 KB Output is correct
4 Correct 3 ms 8864 KB Output is correct
5 Correct 2 ms 8796 KB Output is correct
6 Correct 2 ms 8800 KB Output is correct
7 Correct 2 ms 8796 KB Output is correct
8 Correct 2 ms 8848 KB Output is correct
9 Correct 2 ms 8796 KB Output is correct
10 Correct 2 ms 8796 KB Output is correct
11 Correct 2 ms 8792 KB Output is correct
12 Correct 3 ms 8852 KB Output is correct
13 Correct 3 ms 8796 KB Output is correct
14 Correct 2 ms 8864 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 99 ms 36088 KB Output is correct
2 Correct 109 ms 36092 KB Output is correct
3 Correct 120 ms 36008 KB Output is correct
4 Correct 112 ms 37740 KB Output is correct
5 Correct 126 ms 37852 KB Output is correct
6 Correct 137 ms 40472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 8796 KB Output is correct
2 Correct 3 ms 8948 KB Output is correct
3 Correct 3 ms 8796 KB Output is correct
4 Correct 3 ms 8864 KB Output is correct
5 Correct 2 ms 8796 KB Output is correct
6 Correct 2 ms 8800 KB Output is correct
7 Correct 2 ms 8796 KB Output is correct
8 Correct 2 ms 8848 KB Output is correct
9 Correct 2 ms 8796 KB Output is correct
10 Correct 2 ms 8796 KB Output is correct
11 Correct 2 ms 8792 KB Output is correct
12 Correct 3 ms 8852 KB Output is correct
13 Correct 3 ms 8796 KB Output is correct
14 Correct 2 ms 8864 KB Output is correct
15 Correct 99 ms 36088 KB Output is correct
16 Correct 109 ms 36092 KB Output is correct
17 Correct 120 ms 36008 KB Output is correct
18 Correct 112 ms 37740 KB Output is correct
19 Correct 126 ms 37852 KB Output is correct
20 Correct 137 ms 40472 KB Output is correct
21 Correct 90 ms 33792 KB Output is correct
22 Correct 92 ms 33536 KB Output is correct
23 Correct 102 ms 34044 KB Output is correct
24 Correct 1203 ms 36200 KB Output is correct
25 Execution timed out 3028 ms 38272 KB Time limit exceeded
26 Halted 0 ms 0 KB -