#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);}
//------------------------------------
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}));
}
}
int 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+=max(0,r-l+1);
}
if(cur==u) break;
cur=par[cur];
}
cout << ans << endl;
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
5 ms |
7756 KB |
Output isn't correct |
2 |
Incorrect |
47 ms |
8048 KB |
Output isn't correct |
3 |
Incorrect |
35 ms |
8024 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3549 ms |
11092 KB |
Time limit exceeded |
2 |
Execution timed out |
3569 ms |
10860 KB |
Time limit exceeded |
3 |
Execution timed out |
3566 ms |
10980 KB |
Time limit exceeded |
4 |
Execution timed out |
3562 ms |
11076 KB |
Time limit exceeded |
5 |
Execution timed out |
3573 ms |
10804 KB |
Time limit exceeded |
6 |
Execution timed out |
3560 ms |
10996 KB |
Time limit exceeded |
7 |
Execution timed out |
3575 ms |
10852 KB |
Time limit exceeded |
8 |
Execution timed out |
3543 ms |
11084 KB |
Time limit exceeded |
9 |
Execution timed out |
3568 ms |
10772 KB |
Time limit exceeded |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3544 ms |
10664 KB |
Time limit exceeded |
2 |
Execution timed out |
3560 ms |
11144 KB |
Time limit exceeded |
3 |
Execution timed out |
3554 ms |
11700 KB |
Time limit exceeded |
4 |
Execution timed out |
3560 ms |
10332 KB |
Time limit exceeded |
5 |
Execution timed out |
3550 ms |
10240 KB |
Time limit exceeded |
6 |
Execution timed out |
3567 ms |
11572 KB |
Time limit exceeded |
7 |
Execution timed out |
3583 ms |
11876 KB |
Time limit exceeded |
8 |
Execution timed out |
3577 ms |
11988 KB |
Time limit exceeded |