-2

toibingu

đã đăng vào 21, Tháng 9, 2026, 8:03

include<bits/stdc++.h>

define ll long long

define ull unsigned long long

define ii pair<int,int>

define fi first

define se second

define ass assign

define pb push_back

using namespace std;

mt1993764 rng(chrono::steadyclock::now().timesinceepoch().count());

void file(){ #define TASK "" if(fopen(TASK".INP","r")) freopen(TASK".INP","r",stdin), freopen(TASK".OUT","w",stdout); }

ll rand(ll l,ll r){ return rng()%(r-l+1)+l; }

const int N=1e5+5; const int LG=20;

struct Edge{ int u,v,idu,idv; };

int n,q; vector<pair<int,ll>>adj[N]; Edge canh[N];

void init(){ cin>>n>>q; for(int i=1;i<n;i++){ int u,v; cin>>u>>v; adj[u].pb({v,1LL}); adj[v].pb({u,1ll}); canh[i]={u,v,(int)adj[u].size()-1,(int)adj[v].size()-1}; } }

namespace sub{ bool check(){ return 1; }

int timer,sta[N],fin[N],depth[N],up[N][LG];

void dfs(int u,int p){
    sta[u]=++timer;
    up[u][0]=p;
    for(int i=1;i<LG;i++)
        up[u][i]=up[up[u][i-1]][i-1];
    for(pair<int,ll>pr:adj[u]){
        int v=pr.fi;
        ll w=pr.se;
        if(v==p)
            continue;
        depth[v]=depth[u]+1;
        dfs(v,u);
    }
    fin[u]=timer;
}

int lca(int u,int v){
    if(depth[u]<depth[v])
        swap(u,v);
    int diff=depth[u]-depth[v];
    for(int i=0;i<LG;i++)
        if((diff>>i)&1)
            u=up[u][i];
    if(u==v)
        return u;
    for(int i=LG-1;i>=0;i--)
        if(up[u][i]!=up[v][i]){
            u=up[u][i];
            v=up[v][i];
        }
    return up[u][0];
}

void solve(){
    dfs(1,0);
    while(q--){
        char opt;
        cin>>opt;
        if(opt=='I'){
            int r,s,t;
            cin>>r>>s>>t;
            if(canh[r].u<canh[r].v){
                adj[canh[r].u][canh[r].idv].se=s;
                adj[canh[r].v][canh[r].idu].se=t;

            }else{
                adj[canh[r].v][canh[r].idu].se=s;
                adj[canh[r].u][canh[r].idv].se=s;

            }
        }
        if(opt=='Q'){
            int x,y;
            cin>>x>>y;

        }
    }
}

}

int main(){ srand(time(NULL)); iosbase::syncwith_stdio(0); cin.tie(0);cout.tie(0); file();

init();
if(sub::check())
    sub::solve();

} /*

*/


Đang tải...