# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
877433 |
2023-11-23T08:37:36 Z |
simona1230 |
Jail (JOI22_jail) |
C++17 |
|
5000 ms |
129880 KB |
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e6;
int q,n,m;
vector<int> f[200001];
bool test=0;
void read()
{
cin>>n;
for(int i=1; i<=n; i++)
f[i].clear();
for(int i=1; i<n; i++)
{
int x,y;
cin>>x>>y;
f[x].push_back(y);
f[y].push_back(x);
}
}
int num;
int ts[800001];// number of the vertex corresponding
int te[800001];// to the given tree and segment of the hld
int dw[200001];
int up[200001];
vector<int> v[maxn],o[maxn];
void make_tree(int i,int l,int r)
{
if(l==r)
{
ts[i]=num++;
dw[l]=ts[i];
te[i]=num++;
up[l]=te[i];
//cout<<l<<" "<<r<<" "<<te[i]<<endl;
return;
}
int mid=(l+r)/2;
ts[i]=num++;
te[i]=num++;
//cout<<l<<" "<<r<<" "<<te[i]<<endl;
make_tree(i*2,l,mid);
make_tree(i*2+1,mid+1,r);
int il=ts[i*2];
int ir=ts[i*2+1];
v[ts[i]].push_back(il);
v[ts[i]].push_back(ir);
o[il].push_back(ts[i]);
o[ir].push_back(ts[i]);
il=te[i*2];
ir=te[i*2+1];
v[il].push_back(te[i]);
v[ir].push_back(te[i]);
o[te[i]].push_back(il);
o[te[i]].push_back(ir);
}
int used[200001];
int jump[200001][21];
int sz[200001];
int pos[200001];// new number of vertex i in original graph
int chain[200001];// leader of the chain in which i is
int maxx[200001];
int lvl[200001];
void necessities(int i,int h)
{
sz[i]=1;
used[i]=1;
for(int j=0; j<f[i].size(); j++)
{
int nb=f[i][j];
if(!used[nb])
{
necessities(nb,h+1);
sz[i]+=sz[nb];
if(sz[maxx[i]]<sz[nb])maxx[i]=nb;
}
}
}
int cnt=1;
void hld(int i,int lead,int h)
{
pos[i]=cnt++;
chain[pos[i]]=pos[lead];
lvl[pos[i]]=h;
if(maxx[i])
{
hld(maxx[i],lead,h+1);
jump[pos[maxx[i]]][0]=pos[i];
}
for(int j=0; j<f[i].size(); j++)
{
int nb=f[i][j];
if(pos[nb]==0)
{
hld(nb,nb,h+1);
jump[pos[nb]][0]=pos[i];
}
}
}
void prec()
{
for(int j=1; j<=20; j++)
{
for(int i=1; i<=n; i++)
{
jump[i][j]=jump[jump[i][j-1]][j-1];
//cout<<i<<" "<<j<<" "<<jump[i][j]<<endl;
}
}
}
int make_jump(int x,int k)
{
for(int i=20; i>=0; i--)
if(k&(1<<i))
x=jump[x][i];
return x;
}
int lca(int x,int y)
{
if(lvl[x]>lvl[y])swap(x,y);
y=make_jump(y,abs(lvl[y]-lvl[x]));
//cout<<x<<" "<<y<<endl;
if(x==y)return x;
for(int i=20; i>=0; i--)
{
if(jump[x][i]!=jump[y][i])
{
x=jump[x][i];
y=jump[y][i];
}
}
return jump[x][0];
}
void update(int i,int l,int r,int ql,int qr,int pr)
{
if(ql>qr)return;
if(r<ql||l>qr)return;
if(ql<=l&&r<=qr)
{
//cout<<l<<"-"<<r<<endl;
int idx=ts[i];
//cout<<idx<<endl;
v[pr].push_back(idx);
o[idx].push_back(pr);
idx=te[i];
//cout<<idx<<endl;
v[idx].push_back(pr);
o[pr].push_back(idx);
return;
}
int mid=(l+r)/2;
update(i*2,l,mid,ql,qr,pr);
update(i*2+1,mid+1,r,ql,qr,pr);
}
void make_graph()
{
/*for(int i=1;i<=n;i++)
cout<<chain[i]<<" ";
cout<<endl;*/
for(int i=1; i<=m; i++)
{
int x,y;
cin>>x>>y;
x=pos[x];
y=pos[y];
//cout<<i<<" "<<dw[pos[x]]<<" "<<up[pos[y]]<<endl;
v[dw[x]].push_back(i);
o[i].push_back(dw[x]);
v[i].push_back(up[y]);
o[up[y]].push_back(i);
int ver=lca(x,y);
//cout<<ver<<endl;
int c1=x;
int br = 0;
while(1)
{
int c2=chain[c1];
if(lvl[c2]<lvl[ver])c2=ver;
update(1,1,n,c2,c1,i);
//cout<<c2<<" "<<c1<<endl;
if(c2==ver)break;
c1=jump[c2][0];
br++;
//if(br >= n + 1) assert(false);
}
c1=y;
br = 0;
while(1)
{
int c2=chain[c1];
if(lvl[c2]<lvl[ver])c2=ver;
update(1,1,n,c2,c1,i);
//cout<<c2<<" "<<c1<<endl;
if(c2==ver)break;
c1=jump[c2][0];
br++;
//if(br >= n + 1) assert(false);
}
}
}
int used1[maxn];
stack<int> st;
void dfs1(int i)
{
used1[i]=1;
for(int j=0; j<v[i].size(); j++)
{
int nb=v[i][j];
if(!used1[nb])
{
dfs1(nb);
}
}
st.push(i);
}
int used2[maxn];
void dfs2(int i)
{
used2[i]=1;
for(int j=0; j<o[i].size(); j++)
{
int nb=o[i][j];
if(!used2[nb])
{
dfs2(nb);
}
}
}
void check()
{
for(int i=1;i<=m;i++)
{
if(!used1[i])dfs1(i);
}
int cnt1=0;
while(st.size())
{
int vr=st.top();
st.pop();
if(vr<=m&&!used2[vr])
{
cnt1++;
dfs2(vr);
}
}
if(cnt1==m)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>q;
while(q--)
{
test=0;
for(int i=1; i<maxn; i++)
{
o[i].clear();
v[i].clear();
}
memset(maxx,0,sizeof(maxx));
memset(used,0,sizeof(used));
memset(pos,0,sizeof(pos));
memset(used1,0,sizeof(used1));
memset(used2,0,sizeof(used2));
memset(chain,0,sizeof(chain));
memset(ts,0,sizeof(ts));
memset(te,0,sizeof(te));
memset(sz,0,sizeof(sz));
memset(dw,0,sizeof(dw));
memset(up,0,sizeof(up));
memset(lvl,0,sizeof(lvl));
read();
for(int i=1;i<=n;i++)
for(int j=0;j<=20;j++)
jump[i][j]=0;
cnt=1;
necessities(1,1);
hld(1,1,1);
cnt--;
prec();
cin>>m;
num=m+1;
make_tree(1,1,n);
make_graph();
/*for(int i=1;i<num;i++)
{
cout<<i<<": ";
for(int j=0;j<v[i].size();j++)
cout<<v[i][j]<<" ";
cout<<endl;
}*/
check();
}
return 0;
}
Compilation message
jail.cpp: In function 'void necessities(int, int)':
jail.cpp:71:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
71 | for(int j=0; j<f[i].size(); j++)
| ~^~~~~~~~~~~~
jail.cpp: In function 'void hld(int, int, int)':
jail.cpp:93:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
93 | for(int j=0; j<f[i].size(); j++)
| ~^~~~~~~~~~~~
jail.cpp: In function 'void dfs1(int)':
jail.cpp:218:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
218 | for(int j=0; j<v[i].size(); j++)
| ~^~~~~~~~~~~~
jail.cpp: In function 'void dfs2(int)':
jail.cpp:232:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
232 | for(int j=0; j<o[i].size(); j++)
| ~^~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
64 ms |
129104 KB |
Output is correct |
2 |
Correct |
54 ms |
129108 KB |
Output is correct |
3 |
Correct |
32 ms |
129104 KB |
Output is correct |
4 |
Correct |
3261 ms |
129696 KB |
Output is correct |
5 |
Execution timed out |
5037 ms |
129880 KB |
Time limit exceeded |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
32 ms |
129100 KB |
Output is correct |
2 |
Correct |
31 ms |
129116 KB |
Output is correct |
3 |
Correct |
162 ms |
129396 KB |
Output is correct |
4 |
Correct |
165 ms |
129360 KB |
Output is correct |
5 |
Correct |
171 ms |
129392 KB |
Output is correct |
6 |
Correct |
164 ms |
129616 KB |
Output is correct |
7 |
Correct |
182 ms |
129416 KB |
Output is correct |
8 |
Correct |
165 ms |
129364 KB |
Output is correct |
9 |
Correct |
166 ms |
129324 KB |
Output is correct |
10 |
Correct |
165 ms |
129412 KB |
Output is correct |
11 |
Correct |
149 ms |
129412 KB |
Output is correct |
12 |
Correct |
161 ms |
129380 KB |
Output is correct |
13 |
Correct |
178 ms |
129392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
32 ms |
129100 KB |
Output is correct |
2 |
Correct |
31 ms |
129116 KB |
Output is correct |
3 |
Correct |
162 ms |
129396 KB |
Output is correct |
4 |
Correct |
165 ms |
129360 KB |
Output is correct |
5 |
Correct |
171 ms |
129392 KB |
Output is correct |
6 |
Correct |
164 ms |
129616 KB |
Output is correct |
7 |
Correct |
182 ms |
129416 KB |
Output is correct |
8 |
Correct |
165 ms |
129364 KB |
Output is correct |
9 |
Correct |
166 ms |
129324 KB |
Output is correct |
10 |
Correct |
165 ms |
129412 KB |
Output is correct |
11 |
Correct |
149 ms |
129412 KB |
Output is correct |
12 |
Correct |
161 ms |
129380 KB |
Output is correct |
13 |
Correct |
178 ms |
129392 KB |
Output is correct |
14 |
Correct |
39 ms |
129116 KB |
Output is correct |
15 |
Correct |
48 ms |
129116 KB |
Output is correct |
16 |
Correct |
164 ms |
129368 KB |
Output is correct |
17 |
Correct |
168 ms |
129604 KB |
Output is correct |
18 |
Correct |
169 ms |
129368 KB |
Output is correct |
19 |
Correct |
174 ms |
129116 KB |
Output is correct |
20 |
Correct |
166 ms |
129420 KB |
Output is correct |
21 |
Correct |
174 ms |
129660 KB |
Output is correct |
22 |
Correct |
172 ms |
129428 KB |
Output is correct |
23 |
Correct |
193 ms |
127992 KB |
Output is correct |
24 |
Correct |
192 ms |
128212 KB |
Output is correct |
25 |
Correct |
197 ms |
128080 KB |
Output is correct |
26 |
Correct |
196 ms |
128080 KB |
Output is correct |
27 |
Correct |
184 ms |
128084 KB |
Output is correct |
28 |
Correct |
191 ms |
128004 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
32 ms |
129100 KB |
Output is correct |
2 |
Correct |
31 ms |
129116 KB |
Output is correct |
3 |
Correct |
162 ms |
129396 KB |
Output is correct |
4 |
Correct |
165 ms |
129360 KB |
Output is correct |
5 |
Correct |
171 ms |
129392 KB |
Output is correct |
6 |
Correct |
164 ms |
129616 KB |
Output is correct |
7 |
Correct |
182 ms |
129416 KB |
Output is correct |
8 |
Correct |
165 ms |
129364 KB |
Output is correct |
9 |
Correct |
166 ms |
129324 KB |
Output is correct |
10 |
Correct |
165 ms |
129412 KB |
Output is correct |
11 |
Correct |
149 ms |
129412 KB |
Output is correct |
12 |
Correct |
161 ms |
129380 KB |
Output is correct |
13 |
Correct |
178 ms |
129392 KB |
Output is correct |
14 |
Correct |
39 ms |
129116 KB |
Output is correct |
15 |
Correct |
48 ms |
129116 KB |
Output is correct |
16 |
Correct |
164 ms |
129368 KB |
Output is correct |
17 |
Correct |
168 ms |
129604 KB |
Output is correct |
18 |
Correct |
169 ms |
129368 KB |
Output is correct |
19 |
Correct |
174 ms |
129116 KB |
Output is correct |
20 |
Correct |
166 ms |
129420 KB |
Output is correct |
21 |
Correct |
174 ms |
129660 KB |
Output is correct |
22 |
Correct |
172 ms |
129428 KB |
Output is correct |
23 |
Correct |
193 ms |
127992 KB |
Output is correct |
24 |
Correct |
192 ms |
128212 KB |
Output is correct |
25 |
Correct |
197 ms |
128080 KB |
Output is correct |
26 |
Correct |
196 ms |
128080 KB |
Output is correct |
27 |
Correct |
184 ms |
128084 KB |
Output is correct |
28 |
Correct |
191 ms |
128004 KB |
Output is correct |
29 |
Correct |
196 ms |
128368 KB |
Output is correct |
30 |
Correct |
190 ms |
128336 KB |
Output is correct |
31 |
Correct |
192 ms |
128388 KB |
Output is correct |
32 |
Correct |
191 ms |
128356 KB |
Output is correct |
33 |
Correct |
203 ms |
128080 KB |
Output is correct |
34 |
Correct |
193 ms |
128348 KB |
Output is correct |
35 |
Correct |
167 ms |
129364 KB |
Output is correct |
36 |
Correct |
186 ms |
128356 KB |
Output is correct |
37 |
Incorrect |
192 ms |
128316 KB |
Output isn't correct |
38 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
32 ms |
129100 KB |
Output is correct |
2 |
Correct |
31 ms |
129116 KB |
Output is correct |
3 |
Correct |
162 ms |
129396 KB |
Output is correct |
4 |
Correct |
165 ms |
129360 KB |
Output is correct |
5 |
Correct |
171 ms |
129392 KB |
Output is correct |
6 |
Correct |
164 ms |
129616 KB |
Output is correct |
7 |
Correct |
182 ms |
129416 KB |
Output is correct |
8 |
Correct |
165 ms |
129364 KB |
Output is correct |
9 |
Correct |
166 ms |
129324 KB |
Output is correct |
10 |
Correct |
165 ms |
129412 KB |
Output is correct |
11 |
Correct |
149 ms |
129412 KB |
Output is correct |
12 |
Correct |
161 ms |
129380 KB |
Output is correct |
13 |
Correct |
178 ms |
129392 KB |
Output is correct |
14 |
Correct |
39 ms |
129116 KB |
Output is correct |
15 |
Correct |
48 ms |
129116 KB |
Output is correct |
16 |
Correct |
164 ms |
129368 KB |
Output is correct |
17 |
Correct |
168 ms |
129604 KB |
Output is correct |
18 |
Correct |
169 ms |
129368 KB |
Output is correct |
19 |
Correct |
174 ms |
129116 KB |
Output is correct |
20 |
Correct |
166 ms |
129420 KB |
Output is correct |
21 |
Correct |
174 ms |
129660 KB |
Output is correct |
22 |
Correct |
172 ms |
129428 KB |
Output is correct |
23 |
Correct |
193 ms |
127992 KB |
Output is correct |
24 |
Correct |
192 ms |
128212 KB |
Output is correct |
25 |
Correct |
197 ms |
128080 KB |
Output is correct |
26 |
Correct |
196 ms |
128080 KB |
Output is correct |
27 |
Correct |
184 ms |
128084 KB |
Output is correct |
28 |
Correct |
191 ms |
128004 KB |
Output is correct |
29 |
Correct |
196 ms |
128368 KB |
Output is correct |
30 |
Correct |
190 ms |
128336 KB |
Output is correct |
31 |
Correct |
192 ms |
128388 KB |
Output is correct |
32 |
Correct |
191 ms |
128356 KB |
Output is correct |
33 |
Correct |
203 ms |
128080 KB |
Output is correct |
34 |
Correct |
193 ms |
128348 KB |
Output is correct |
35 |
Correct |
167 ms |
129364 KB |
Output is correct |
36 |
Correct |
186 ms |
128356 KB |
Output is correct |
37 |
Incorrect |
192 ms |
128316 KB |
Output isn't correct |
38 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
43 ms |
128076 KB |
Output is correct |
2 |
Correct |
56 ms |
128344 KB |
Output is correct |
3 |
Correct |
56 ms |
128080 KB |
Output is correct |
4 |
Correct |
41 ms |
128088 KB |
Output is correct |
5 |
Execution timed out |
5030 ms |
128324 KB |
Time limit exceeded |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
64 ms |
129104 KB |
Output is correct |
2 |
Correct |
54 ms |
129108 KB |
Output is correct |
3 |
Correct |
32 ms |
129104 KB |
Output is correct |
4 |
Correct |
3261 ms |
129696 KB |
Output is correct |
5 |
Execution timed out |
5037 ms |
129880 KB |
Time limit exceeded |
6 |
Halted |
0 ms |
0 KB |
- |