把两份代码拼起来是不是就A了:
块长为2:
块长为600:

#include<bits/stdc++.h>
#define min(x,y) ((x)<(y)?(x):(y))
#define max(x,y) ((x)>(y)?(x):(y))
#define xx first
#define yy second
#define lfx(x,y) {min(x,y),max(x,y)}
using namespace std;
const int N=1e5+5,M=5e5+5,B=600,inf=1e9+9;
int n,m,q,head[N],ei,du[N],S[N];
map<int,int>mp[N][3],mps[6];
map<pair<int,int>,int>egw;
priority_queue<int,vector<int>,greater<int> >qu[N][3],qs[6];
vector<int>G[N],ZD;
inline int calc(int x,int y){
if(x<y)swap(x,y);
if(!x)return y;
if(x==1)return 1+y;
if(x==2)return 3+y;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m;int u,v,w;
for(int i=1; i<=m; ++i){
cin>>u>>v>>w;
++du[u],++du[v];
G[u].push_back(v),G[v].push_back(u);
if(egw.find(lfx(u,v))!=egw.end())
egw[lfx(u,v)]=min((egw[lfx(u,v)]),w);
else egw[lfx(u,v)]=w;
}
for(auto it:egw){
int u=it.xx.xx,v=it.xx.yy,w=it.yy;
if(du[u]<=B&&du[v]<=B)qs[0].push(w);
if(du[u]>B)qu[u][0].push(w);
if(du[v]>B)qu[v][0].push(w);
}
for(u=1; u<=n; ++u)
if(du[u]>B)ZD.push_back(u);
string op;cin>>q;
short ss,s1,s2;int res;
while(q--){
cin>>op;
if(op[0]=='M'){
short ss=op[4]-'A';
cin>>u;
if(du[u]<=B)
for(int v:G[u]){
w=egw[lfx(u,v)];
if(du[v]<=B)++mps[calc(S[v],S[u])][w],qs[calc(S[v],ss)].push(w);
else ++mp[v][S[u]][w],qu[v][ss].push(w);
}
else for(int v:ZD)
if(egw.find(lfx(u,v))!=egw.end()){
w=egw[lfx(u,v)];
++mp[v][S[u]][w];
qu[v][ss].push(w);
}
S[u]=ss;
}if(op[0]=='A'){
short s1=op[3]-'A',s2=op[4]-'A',tt=calc(s1,s2);
res=inf;
if(!qs[tt].empty()){
while(mps[tt][qs[tt].top()])
--mps[tt][qs[tt].top()],qs[tt].pop();
if(!qs[tt].empty())res=qs[tt].top();
}
for(int u:ZD){
if(S[u]==s1){
if(!qu[u][s2].empty()){
while(mp[u][s2][qu[u][s2].top()])
--mp[u][s2][qu[u][s2].top()],qu[u][s2].pop();
if(!qu[u][s2].empty())res=min(res,qu[u][s2].top());
}
}
if(S[u]==s2){
if(!qu[u][s1].empty()){
while(mp[u][s1][qu[u][s1].top()])
--mp[u][s1][qu[u][s1].top()],qu[u][s1].pop();
if(!qu[u][s1].empty())res=min(res,qu[u][s1].top());
}
}
}
if(res>=inf)cout<<"No Found!\n";
else cout<<res<<'\n';
}
}
return 0;
}