比赛 国庆欢乐赛2 评测结果 TTTTTWWWWWWWWWWWWWWWWWWWW
题目名称 追忆 最终得分 0
用户昵称 梦那边的美好RE 运行时间 52.528 s
代码语言 C++ 内存使用 39.41 MiB
提交时间 2025-10-04 11:38:55
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7;
vector<int>G[N];
int a[N],b[N],mapp[2008][2008];
int c,T;
int main(){
    freopen("recall.in","r",stdin);
    freopen("recall.out","w",stdout);     
    cin>>c>>T;
    while(T--){
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        if(c<=5){
            int n,m,q;
            cin>>n>>m>>q;
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    mapp[i][j]=1e9+7;
                }
                mapp[i][i]=0;
            }
            for(int i=1;i<=m;i++){
                int u,v;
                cin>>u>>v;
                G[u].push_back(v);
                mapp[u][v]=1;
            }
            for(int k=1;k<=n;k++){
                for(int i=1;i<=n;i++){
                    for(int j=1;j<=n;j++){
                         if(mapp[i][j]>mapp[i][k]+mapp[k][j]){
                             mapp[i][j]=mapp[i][k]+mapp[k][j];
                         }
                    }
                }
            }          
            for(int i=1;i<=n;i++){
                cin>>a[i];
            }
            for(int i=1;i<=n;i++){
                cin>>b[i];
            }
            while(q--){
                int o,x,y,k;
                cin>>o;
                if(o==1){
                    cin>>x>>y;
                    swap(a[x],a[y]);
                }
                else if(o==2){
                    cin>>x>>y;
                    swap(b[x],b[y]);
                }
                else{
                    cin>>k>>x>>y;
                    int ans=0;
                    for(int i=1;i<=n;i++){
                        if(x<=a[i]&&a[i]<=y&&mapp[k][i]!=1e9+7){
                            ans=max(ans,b[i]);
                        }
                    }
                    cout<<ans<<"\n";
                }
            }
        }
        else{
            int n,m,q;
            cin>>n>>m>>q;
            for(int i=1;i<=m;i++){
                int u,v;
                cin>>u>>v;
                G[u].push_back(v);
            }
            for(int i=1;i<=n;i++){
                cin>>a[i];
            }
            for(int i=1;i<=n;i++){
                cin>>b[i];
            }
            while(q--){
                int o,x,y;
                cin>>o>>x>>y;
                if(o==3){
                    cout<<0<<"\n";
                }
            }
        }
    }

    return 0;
}