이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 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... |