#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int>vi;
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) begin(x),end(x)
typedef string str;
typedef pair<int,int>pi;
#define fi first
#define se second
typedef vector<pi>vpi;
#define eb emplace_back
#define FOR(i,a,b) for(int i=a; i<b; i++)
#define ROF(i,a,b) for(int i=b-1; i>=a; i--)
void ckmin(int &x, int y){x=min(x,y);}
//------------------------------------
#define int ll
const int MX=1e5;
int N;
vi adj[MX];
multiset<pi> vec[MX];
vi par(MX);
void dfs(int u, int p, int dest){
//if(u==dest) return;
for(int v: adj[u]) if(v!=p){
par[v]=u;
dfs(v,u,dest);
}
}
void add(int u, int v){
dfs(u,u,v);
int cur=v,n=0;
vi cy;
while(1){
n++;
cy.pb(cur);
if(cur==u) break;
cur=par[cur];
}
reverse(all(cy));
FOR(i,0,n){
vec[cy[i]].insert({n,i});
}
}
void del(int u, int v){
dfs(u,u,v);
int cur=v,n=0;
vi cy;
while(1){
n++;
cy.pb(cur);
if(cur==u) break;
cur=par[cur];
}
reverse(all(cy));
FOR(i,0,n){
vec[cy[i]].erase(vec[cy[i]].find({n,i}));
}
}
int32_t main(){
cin>>N;
FOR(i,0,N-1){
int u,v; cin>>u>>v;
adj[u].pb(v);
adj[v].pb(u);
}
int K; cin>>K;
FOR(i,0,K){
int u,v; cin>>u>>v;
add(u,v);
}
/*FOR(i,1,N+1){
for(auto x: vec[i]) cout << x.fi << ' ' << x.se << endl;
cout << endl;
}*/
int Q; cin>>Q;
while(Q--){
int ty; cin>>ty;
if(ty==1){
int u,v; cin>>u>>v;
add(u,v);
}
else if(ty==2){
int u,v; cin>>u>>v;
del(u,v);
}
else{
int u,v,t,tt; cin>>u>>v>>t>>tt;
dfs(u,u,v);
int cur=v,ans=0;
while(1){
for(auto it: vec[cur]){
int a=it.fi,b=it.se;
int l=(t-b+a-1)/a,r=(tt-b)/a;
if(l<0) l=0;
ans+=max(0ll,r-l+1);
}
if(cur==u) break;
cur=par[cur];
}
cout << ans << endl;
}
}
}
/*
5
1 2
2 3
2 4
1 5
1
4 1
5
3 3 5 0 3
1 2 5
3 4 5 1 5
2 2 5
3 3 5 0 3
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
5 ms |
7756 KB |
Output isn't correct |
2 |
Incorrect |
55 ms |
8044 KB |
Output isn't correct |
3 |
Incorrect |
42 ms |
8040 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3585 ms |
10832 KB |
Time limit exceeded |
2 |
Execution timed out |
3592 ms |
10728 KB |
Time limit exceeded |
3 |
Execution timed out |
3594 ms |
10852 KB |
Time limit exceeded |
4 |
Execution timed out |
3579 ms |
10908 KB |
Time limit exceeded |
5 |
Execution timed out |
3545 ms |
10768 KB |
Time limit exceeded |
6 |
Execution timed out |
3576 ms |
10944 KB |
Time limit exceeded |
7 |
Execution timed out |
3555 ms |
10960 KB |
Time limit exceeded |
8 |
Execution timed out |
3560 ms |
11000 KB |
Time limit exceeded |
9 |
Execution timed out |
3544 ms |
10912 KB |
Time limit exceeded |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3578 ms |
10496 KB |
Time limit exceeded |
2 |
Execution timed out |
3568 ms |
10628 KB |
Time limit exceeded |
3 |
Execution timed out |
3591 ms |
10784 KB |
Time limit exceeded |
4 |
Execution timed out |
3583 ms |
10164 KB |
Time limit exceeded |
5 |
Execution timed out |
3598 ms |
10096 KB |
Time limit exceeded |
6 |
Execution timed out |
3599 ms |
10696 KB |
Time limit exceeded |
7 |
Execution timed out |
3548 ms |
10720 KB |
Time limit exceeded |
8 |
Execution timed out |
3588 ms |
10752 KB |
Time limit exceeded |