#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int 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);}
//------------------------------------
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;
ans+=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 |
6 ms |
8140 KB |
Output isn't correct |
2 |
Incorrect |
58 ms |
8464 KB |
Output isn't correct |
3 |
Incorrect |
42 ms |
8508 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3558 ms |
12220 KB |
Time limit exceeded |
2 |
Execution timed out |
3547 ms |
12032 KB |
Time limit exceeded |
3 |
Execution timed out |
3561 ms |
12068 KB |
Time limit exceeded |
4 |
Execution timed out |
3561 ms |
12256 KB |
Time limit exceeded |
5 |
Execution timed out |
3554 ms |
12028 KB |
Time limit exceeded |
6 |
Execution timed out |
3576 ms |
12108 KB |
Time limit exceeded |
7 |
Execution timed out |
3590 ms |
12004 KB |
Time limit exceeded |
8 |
Execution timed out |
3594 ms |
12112 KB |
Time limit exceeded |
9 |
Execution timed out |
3589 ms |
12056 KB |
Time limit exceeded |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3579 ms |
11280 KB |
Time limit exceeded |
2 |
Execution timed out |
3599 ms |
11308 KB |
Time limit exceeded |
3 |
Execution timed out |
3591 ms |
11368 KB |
Time limit exceeded |
4 |
Execution timed out |
3558 ms |
11012 KB |
Time limit exceeded |
5 |
Execution timed out |
3571 ms |
11044 KB |
Time limit exceeded |
6 |
Execution timed out |
3594 ms |
11372 KB |
Time limit exceeded |
7 |
Execution timed out |
3592 ms |
11408 KB |
Time limit exceeded |
8 |
Execution timed out |
3583 ms |
11332 KB |
Time limit exceeded |