比赛 |
国庆欢乐赛2 |
评测结果 |
WWWWWEEEEEEEEEEEEEEEEEEEE |
题目名称 |
追忆 |
最终得分 |
0 |
用户昵称 |
梦那边的美好ME |
运行时间 |
3.906 s |
代码语言 |
C++ |
内存使用 |
3.61 MiB |
提交时间 |
2025-10-04 11:44:07 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll head[410000],cnt;
ll c,T;
ll n,m,q;
ll a[110000],b[110000];
bitset <2200> mp[2200];
int main(){
// freopen("in.in","r",stdin);
// freopen("out.out","w",stdout);
freopen("recall.in","r",stdin);
freopen("recall.out","w",stdout);
scanf("%lld %lld",&c,&T);
while(T--){
scanf("%lld %lld %lld",&n,&m,&q);
for (int i=1;i<=m;i++){
ll u,v;
scanf("%lld %lld",&u,&v);
mp[u][v]=1;
}
for (int k=1;k<=n;k++){
for (int i=1;i<=n;i++){
if (mp[i][k]){
mp[i]|=mp[k];
}
}
}
for (int i=1;i<=n;i++){
scanf("%lld",&a[i]);
mp[i][i]=1;
}
for (int i=1;i<=n;i++){
scanf("%lld",&b[i]);
}
for (int i=1;i<=q;i++){
ll o,x,y,l,r,maxn=0;
scanf("%lld",&o);
if (o==1){
scanf("%lld %lld",&x,&y);
swap(a[x],a[y]);
}else if (o==2){
scanf("%lld %lld",&x,&y);
swap(b[x],b[y]);
}else{
scanf("%lld %lld %lld",&x,&l,&r);
for (int i=1;i<=n;i++){
if (a[i]>=l&&a[i]<=r){
if (mp[x][i]){
maxn=max(maxn,b[i]);
}
}
}
printf("%lld\n",maxn);
}
}
}
return 0;
}