This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
const int maxn=300000+10,maxk=1000+10;
int fk=0,fn=0,f=0;
vector<int>adj[maxn],revadj[maxn];
char vis[maxn][maxk],revvis[maxn][maxk];
void dfs(int u,int v){
if(revvis[u][v]==1){
f=1;
}
vis[u][v]=1;
for(auto x:adj[u]){
if(vis[x][v]==0){
dfs(x,v);
}
}
}
void revdfs(int u,int v){
if(vis[u][v]==1){
f=1;
}
revvis[u][v]=1;
for(auto x:revadj[u]){
if(revvis[x][v]==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[a][i]==1&&vis[b][i]==0){
dfs(b,i);
}
if(revvis[a][i]==0&&revvis[b][i]==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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |