记录编号 |
606824 |
评测结果 |
AAAAATTTTTTTTTTTTTTTTTEEE |
题目名称 |
4116.[统一省选 2025]追忆 |
最终得分 |
20 |
用户昵称 |
郑霁桓 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
154.405 s |
提交时间 |
2025-10-04 12:14:45 |
内存使用 |
437.85 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int c,T,n,m,q,x,y,a[80005],b[80005],op,l,r,tt,as,p[80005],ff,fa;
vector<int>v[80005],t[80005];
inline void dfs(int xx){
if(p[xx]==tt) return;
t[tt].push_back(xx),p[xx]=tt,ff=fa;
for(register int i=0;i<v[xx].size();++i) if(v[xx][i]!=ff) fa=xx,dfs(v[xx][i]);
fa=ff;
return;
}
inline int read(){
int xx=0;
char ch=getchar();
while(ch<'0'||'9'<ch) ch=getchar();
while('0'<=ch&&ch<='9') xx=(xx<<1)+(xx<<3)+(ch-'0'),ch=getchar();
return xx;
}
int main(){
freopen("recall.in","r",stdin);
freopen("recall.out","w",stdout);
c=read(),T=read();
while(T--){
n=read(),m=read(),q=read(),tt=as=0;
for(register int i=1;i<=n;++i) v[i].clear(),t[i].clear(),p[i]=0;
for(register int i=1;i<=m;++i) x=read(),y=read(),v[x].push_back(y);
for(register int i=1;i<=n;++i) tt=i,ff=fa=0,dfs(i);
for(register int i=1;i<=n;++i) a[i]=read();
for(register int i=1;i<=n;++i) b[i]=read();
while(q--){
op=read(),x=read();
if(op==1) y=read(),swap(a[x],a[y]);
else if(op==2) y=read(),swap(b[x],b[y]);
else if(op==3){
l=read(),r=read(),as=0;
for(register int i=0;i<t[x].size();++i)
if(l<=a[t[x][i]]&&a[t[x][i]]<=r) as=max(as,b[t[x][i]]);
printf("%lld",as),puts("");
}
}
}
return 0;
}