记录编号 |
606837 |
评测结果 |
AAAAATAAAAAAAAAAAAAAAATTT |
题目名称 |
4116.[统一省选 2025]追忆 |
最终得分 |
84 |
用户昵称 |
梦那边的美好TE |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
138.447 s |
提交时间 |
2025-10-04 14:41:26 |
内存使用 |
748.91 MiB |
显示代码纯文本
#include <iostream>
#include <bitset>
#include <vector>
using namespace std;
const int MAXSIZE=(1<<20);
char buf[1<<20],*p1,*p2;
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,MAXSIZE,stdin),p1==p2)?EOF:*p1++)
inline void read(int &a){
int x=0,f=1;char ch=gc();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=gc();}
while(isdigit(ch))x=(x<<3)+(x<<1)+ch-48,ch=gc();
return a=x*f,void();
}
const int N=1e5+10;
int n,m,q,a[N],b[N],ib[N];
vector<int>G[N];
bitset<N>f[N];
void clear(){
for(int i=1;i<=n;i++)f[i].reset(),G[i].clear();
}
void work(){
read(n),read(m),read(q);
for(int i=1,u,v;i<=m;i++){
read(u),read(v);
G[u].push_back(v);
}
for(int i=n;i>=1;i--){
f[i][i]=1;
for(auto j:G[i])f[i]|=f[j];
}
for(int i=1;i<=n;i++)read(a[i]);
for(int i=1;i<=n;i++)read(b[i]),ib[b[i]]=i;
while(q--){
int o,x,y,p,flag=0;
read(o);
if(o==1){
read(x),read(y);
swap(a[x],a[y]);
}else if(o==2){
read(x),read(y);
swap(b[x],b[y]);
swap(ib[b[x]],ib[b[y]]);
}else{
read(p),read(x),read(y);
for(int i=n,u;i>=1;i--){
if(f[p][ib[i]]){
u=ib[i];
if(x<=a[u]&&a[u]<=y){
printf("%d\n",i);
flag=1;break;
}
}
}
if(!flag)printf("0\n");
}
}
return;
}
int main(){
freopen("recall.in","r",stdin);
freopen("recall.out","w",stdout);
int c,T;
read(c),read(T);
while(T--)work(),clear();
return 0;
}