CSES - Leirikisa 2 - Results
Submission details
Task:Nautilus
Sender:a256
Submission time:2023-04-18 17:13:37 +0300
Language:C++ (C++11)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.01 s2, 3details
#20.01 s1, 2, 3details
#30.01 s1, 2, 3details
#40.01 s1, 2, 3details
#50.01 s1, 2, 3details
#60.01 s1, 2, 3details
#70.01 s1, 2, 3details
#80.01 s2, 3details
#90.01 s2, 3details
#100.01 s2, 3details
#110.01 s2, 3details
#120.01 s2, 3details
#130.01 s2, 3details
#140.01 s2, 3details
#150.01 s2, 3details
#160.01 s2, 3details
#170.01 s2, 3details
#180.01 s2, 3details
#190.01 s2, 3details
#200.01 s2, 3details
#210.01 s2, 3details
#220.01 s2, 3details
#230.01 s3details
#240.01 s3details
#250.01 s3details
#260.01 s3details
#270.01 s3details
#280.01 s3details
#290.01 s3details
#300.01 s3details
#310.01 s3details
#320.01 s3details
#330.01 s3details
#340.01 s3details
#350.01 s3details
#360.01 s3details
#370.01 s3details

Code

#include <bits/stdc++.h>
using namespace std;
using ll=long long;
constexpr ll LLM=LONG_LONG_MAX;

int N,S,Q,E,shp[(int)2e5],I,D[(int)2e5];
vector<pair<int,pair<ll,int>>> v[(int)2e5];
vector<pair<int,int>> tiet;
vector<int> shops;
int f[(int)2e5][32],z[(int)2e5];
pair<int,ll> h[(int)2e5];

int ylös(int s,int k){
	for(;k;k^=(k&-k))
		s=f[s][__builtin_ctz(k)+1];
	return s;
}

int aye(int a,int b){
	if(D[b]>D[a]) swap(a,b);
	a=ylös(a,D[a]-D[b]);
	if(a==b) return a;
	for(int i=31;i;--i){
		if(f[a][i]!=f[b][i]){
			a=f[a][i];
			b=f[b][i];
		}
	}
	return f[a][1];
}

void haku(int s,int p,int d){
	D[s]=d;
	f[s][0]=s;
	f[s][1]=p;
	for(int k=2;k<32&&f[s][k-1];++k){
		f[s][k]=f[f[s][k-1]][k-1];
	}
	for(auto u:v[s]){
		if(u.first==p) continue;
		haku(u.first,s,d+1);
	}
}

void haku2(){
	priority_queue<pair<pair<ll,int>,pair<int,int>>> q;
	for(int s:shops) q.push({{0,s},{s,-1}});
	while(q.size()){
		auto p=q.top();q.pop();
		ll et=-p.first.first;
		int u=p.second.first;
		if(z[u]) continue;
		z[u]=1;
		h[u]={p.first.second,et};

		for(auto B:v[u]){
			if(B.first==p.second.second||B.second.second==I) continue;
			q.push({{-et-B.second.first,p.first.second},{B.first,u}});
		}
	}
}

bool reitillä(int a,int b,int s){
	if(s==a||s==b) return true;
	int ay=aye(a,b);
	if(D[s]<D[ay]) return false;
	if(D[a]>D[s]&&ylös(a,D[a]-D[s])==s) return true;
	if(D[b]>D[s]&&ylös(b,D[b]-D[s])==s) return true;
	return false;
}

bool kaari_reitillä(int a,int b){
	int ka=tiet[I-1].first,kb=tiet[I-1].second;
	return reitillä(a,b,ka)&&reitillä(a,b,kb);
}

bool ppako(int s){
	int a=tiet[I-1].first,b=tiet[I-1].second;
	return !(reitillä(s,E,a)&&reitillä(s,E,b));
}

bool pako(int s,int p){
	if(s==E) return true;
	for(auto u:v[s]){
		if(u.first==p||u.second.second==I) continue;
		if(pako(u.first,s)) return true;
	}
	return false;
}

ll etäisyys(int s,int ss){
	priority_queue<pair<ll,pair<int,int>>> q;
	q.push({0,{s,-1}});
	while(q.size()){
		auto p=q.top();q.pop();
		ll et=-p.first;
		int u=p.second.first;
		if(shp[u]) return et;
		if(ss!=h[u].first){
			if(!kaari_reitillä(u,h[u].first))
				return et+h[u].second;
		}
		for(auto B:v[u]){
			if(B.first==p.second.second||B.second.second==I) continue;
			q.push({-et-B.second.first,{B.first,u}});
		}
	}
	return -1;
}

void kysmys(){
	int R;
	cin>>I>>R;
	ll d;
	bool p=ppako(R);
	if(p){
		cout<<"escaped\n";
	} else{
		if(!kaari_reitillä(R,h[R].first)){
			cout<<h[R].second<<'\n';
			return;
		}
		if((d=etäisyys(R,h[R].first))==-1){
			cout<<"oo\n";
		} else {
			cout<<d<<'\n';
		}
	}
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);
	cin>>N>>S>>Q>>E;
	for(int i=0;i<N-1;++i){
		int A,B,W;
		cin>>A>>B>>W;
		v[A].push_back({B,{W,i+1}});
		v[B].push_back({A,{W,i+1}});
		tiet.push_back({A,B});
	}

	haku(1,0,0);

	for(int i=0;i<S;++i){
		int s; cin>>s;
		shp[s]=1;
		shops.push_back(s);
	}

	haku2();
	for(int i=0;i<Q;++i){
		kysmys();
	}
}

Test details

Test 1

Group: 2, 3

Verdict:

input
5 9 7
...##....
..#.##..#
..#....##
.##...#..
...

correct output
22

user output
(empty)

Test 2

Group: 1, 2, 3

Verdict:

input
100 100 100
.................................

correct output
8272

user output
(empty)

Test 3

Group: 1, 2, 3

Verdict:

input
100 100 100
.#...#.#..#.....#.........#......

correct output
5

user output
(empty)

Test 4

Group: 1, 2, 3

Verdict:

input
100 100 100
.#...##...#...##....##.#.##..#...

correct output
1

user output
(empty)

Test 5

Group: 1, 2, 3

Verdict:

input
100 100 100
..#.#.#..###.#.#.##..########....

correct output
1

user output
(empty)

Test 6

Group: 1, 2, 3

Verdict:

input
100 100 100
.#.#.###########..#.###.######...

correct output
1

user output
(empty)

Test 7

Group: 1, 2, 3

Verdict:

input
100 100 100
##############################...

correct output
1

user output
(empty)

Test 8

Group: 2, 3

Verdict:

input
100 100 100
.................................

correct output
9503

user output
(empty)

Test 9

Group: 2, 3

Verdict:

input
100 100 100
#..#.##..#....##...#.##.##..#....

correct output
495

user output
(empty)

Test 10

Group: 2, 3

Verdict:

input
100 100 100
#.#...######.#####.#.##...#.##...

correct output
51

user output
(empty)

Test 11

Group: 2, 3

Verdict:

input
100 100 100
.#.#.###########..#.###.######...

correct output
34

user output
(empty)

Test 12

Group: 2, 3

Verdict:

input
100 100 100
##############################...

correct output
19

user output
(empty)

Test 13

Group: 2, 3

Verdict:

input
100 100 100
.................................

correct output
9801

user output
(empty)

Test 14

Group: 2, 3

Verdict:

input
100 100 100
..............#..................

correct output
7479

user output
(empty)

Test 15

Group: 2, 3

Verdict:

input
100 100 100
#.#.........###.#..#.#..####.#...

correct output
5328

user output
(empty)

Test 16

Group: 2, 3

Verdict:

input
100 100 100
.#.#.###########..#.###.######...

correct output
127

user output
(empty)

Test 17

Group: 2, 3

Verdict:

input
100 100 100
##############################...

correct output
19

user output
(empty)

Test 18

Group: 2, 3

Verdict:

input
100 100 100
.................................

correct output
10000

user output
(empty)

Test 19

Group: 2, 3

Verdict:

input
100 100 100
..............#..................

correct output
8047

user output
(empty)

Test 20

Group: 2, 3

Verdict:

input
100 100 100
#.#...######.#####.#.##...#.##...

correct output
3500

user output
(empty)

Test 21

Group: 2, 3

Verdict:

input
100 100 100
.#.#.###########..#.###.######...

correct output
1228

user output
(empty)

Test 22

Group: 2, 3

Verdict:

input
100 100 100
##############################...

correct output
43

user output
(empty)

Test 23

Group: 3

Verdict:

input
500 500 5000
.................................

correct output
249493

user output
(empty)

Test 24

Group: 3

Verdict:

input
500 500 5000
#..#.##..#....##...#.##.##..#....

correct output
222

user output
(empty)

Test 25

Group: 3

Verdict:

input
500 500 5000
.#####....####..###...####.#.#...

correct output
1268

user output
(empty)

Test 26

Group: 3

Verdict:

input
500 500 5000
#.#####.##..#####.####..######...

correct output
805

user output
(empty)

Test 27

Group: 3

Verdict:

input
500 500 5000
##############################...

correct output
349

user output
(empty)

Test 28

Group: 3

Verdict:

input
500 500 5000
.................................

correct output
249999

user output
(empty)

Test 29

Group: 3

Verdict:

input
500 500 5000
..............#..................

correct output
197917

user output
(empty)

Test 30

Group: 3

Verdict:

input
500 500 5000
#.#.........###.#..#.#..####.#...

correct output
79550

user output
(empty)

Test 31

Group: 3

Verdict:

input
500 500 5000
#.#####.##..#####.####..######...

correct output
1221

user output
(empty)

Test 32

Group: 3

Verdict:

input
500 500 5000
##############################...

correct output
1414

user output
(empty)

Test 33

Group: 3

Verdict:

input
500 500 5000
.................................

correct output
250000

user output
(empty)

Test 34

Group: 3

Verdict:

input
500 500 5000
..............#..................

correct output
199752

user output
(empty)

Test 35

Group: 3

Verdict:

input
500 500 5000
.#####....####..###...####.#.#...

correct output
87691

user output
(empty)

Test 36

Group: 3

Verdict:

input
500 500 5000
#.#####.##..#####.####..######...

correct output
30998

user output
(empty)

Test 37

Group: 3

Verdict:

input
500 500 5000
##############################...

correct output
1440

user output
(empty)