Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32999 liuziming 【S】T2 C++ 运行超时 10 1000 MS 4340 KB 1735 2024-10-02 17:21:54

Tests(2/20):


#include<bits/stdc++.h> using namespace std; int n,m,q,s,t,k,lastans=1,type,pathtot,path[20010]; vector<int> E[2010]; bool reach[2010][2010]; bool flag=0; bool vis[2010]; bool cmp(int a,int b){ return a<b; }void floyd(){ for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ reach[i][j]=((reach[i][j])|(reach[i][k]&reach[k][j])); } } } }void dfs(int now){ //cout<<"dfs"<<now<<'\n'; if(pathtot>n+2) return; if(vis[now]){ flag=0; return; }//cout<<"dfs"<<now<<'\n'; vis[now]=1; path[++pathtot]=now; if(now==t) return; for(auto v:E[now]){ //cout<<v<<' '<<reach[v][t]<<'\n'; if(!reach[v][t]) continue; dfs(v); if((flag==0)||path[pathtot]==t) return; }pathtot--; }int main(){ //freopen("code.in","r",stdin); //freopen("path.out","w",stdout); ios::sync_with_stdio(0); cin>>n>>m>>q>>type; for(int i=1;i<=m;i++){ int u,v; cin>>u>>v; E[u].push_back(v); reach[u][v]=1; }for(int i=1;i<=n;i++){ sort(E[i].begin(),E[i].end(),cmp); }floyd(); while(q--){ for(int i=1;i<=n;i++){ vis[i]=0; }pathtot=0; cin>>s>>t>>k; s=(s^(lastans*type))%n+1; t=(t^(lastans*type))%n+1; k=(k^(lastans*type))%n+1; //cout<<s<<' '<<t<<' '<<k<<'\n'; flag=1; dfs(s); if(flag==0||pathtot<k){ //cout<<flag<<' '<<pathtot<<'\n'; cout<<"-1\n"; lastans=1; }else{ cout<<path[k]<<'\n'; lastans=path[k]; } } }


测评信息: