比赛 国庆欢乐赛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;
}