제출 #744530

#제출 시각아이디문제언어결과실행 시간메모리
744530amirhoseinfar1385게임 (APIO22_game)C++17
60 / 100
3501 ms85400 KiB
#include<bits/stdc++.h> using namespace std; const int maxn=300000+10,maxk=1000+10; short int fk=0,fn=0,f=0; vector<short int>adj[maxn],revadj[maxn]; char vis[maxk][maxn],revvis[maxk][maxn]; void dfs(int u,int v){ if(revvis[v][u]==1){ f=1; } vis[v][u]=1; for(auto x:adj[u]){ if(vis[v][x]==0){ dfs(x,v); } } } void revdfs(int u,int v){ if(vis[v][u]==1){ f=1; } revvis[v][u]=1; for(auto x:revadj[u]){ if(revvis[v][x]==0){ revdfs(x,v); } } } void con(int a,int b){ if(a==b&&a<fk){ f=1; return; } adj[a].push_back(b); revadj[b].push_back(a); for(int i=0;i<fk;i++){ if(vis[i][a]==1&&vis[i][b]==0){ dfs(b,i); } if(revvis[i][a]==0&&revvis[i][b]==1){ revdfs(a,i); } } } void init(int n, int k) { for(int i=0;i<k;i++){ vis[i][i]=revvis[i][i]=1; } fk=k; fn=n; for(int i=0;i<k-1;i++){ con(i,i+1); } } int add_teleporter(int u, int v) { con(u,v); if(f){ return 1; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...