记录编号 606846 评测结果 AAAAATTTTTTTTTTTTTTTTTTTT
题目名称 4116.[统一省选 2025]追忆 最终得分 20
用户昵称 Gravatar梦那边的美好ME 是否通过 未通过
代码语言 C++ 运行时间 181.105 s
提交时间 2025-10-04 15:09:37 内存使用 821.93 MiB
显示代码纯文本
#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],p[110000];
bitset <110000> t[110000],aaaaa;
vector <int> vg[110000];

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);
            vg[u].push_back(v);
        }
        for (int i=n;i>=1;i--){
            t[i][i]=1;
			for (int u:vg[i]){
            	t[i]|=t[u];
            }
        }
        for (int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            p[a[i]]=i;
        }
        for (int i=1;i<=n;i++){
            scanf("%lld",&b[i]);
        }
        for (int i=1;i<=q;i++){
            ll o,x,y,l,r;
            scanf("%lld",&o);
            if (o==1){
                scanf("%lld %lld",&x,&y);
                swap(p[a[x]],p[a[y]]);
                swap(a[x],a[y]);
            }else if (o==2){
                scanf("%lld %lld",&x,&y);
                swap(b[x],b[y]);
            }else{
            	ll maxn=0;
                scanf("%lld %lld %lld",&x,&l,&r);
                for (int i=l;i<=r;i++){
                    if (t[x][p[i]]){
                        maxn=max(maxn,b[p[i]]);
                        if (maxn==n) break;
                    }
                }
                printf("%lld\n",maxn);
            }
        }
        for (int i=1;i<=n;i++){
        	vg[i].clear();
        	t[i]=aaaaa;
		}
    }
    return 0;
}