제출 #607052

#제출 시각아이디문제언어결과실행 시간메모리
607052loctildore게임 (APIO22_game)C++17
60 / 100
128 ms6016 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; // trans rights #define ll long long #define f first #define s second #define endl '\n' #define all(x) begin(x), end(x) #define bkt 547 int n,k; bool flag; vector<int> grph[30069],revs[30069]; int lft[30069],rht[30069]; void init(int N, int K) { n=N; k=K; for (int i = 0; i < k; i++) { lft[i]=i/bkt; rht[i]=i; } for (int i = k; i < n; i++) { lft[i]=-1; rht[i]=k; } } void dfs(int x) { for (int i : grph[x]) { if (i<k&&i/bkt<lft[x]) { flag=true; } if (lft[i]<lft[x]) { lft[i]=lft[x]; dfs(i); } if (x<k&&x>=rht[i]) { flag=true; } if (rht[x]>rht[i]&&rht[i]/bkt==lft[x]) { rht[x]=rht[i]; } } } void rdfs(int x) { for (int i : revs[x]) { if (i<k&&i>=rht[x]) { flag=true; } if (rht[i]>rht[x]&&rht[x]/bkt==lft[i]) { rht[i]=rht[x]; rdfs(i); } } } int add_teleporter(int u, int v) { grph[u].push_back(v); revs[v].push_back(u); dfs(u); rdfs(u); /*for (int i = 0; i < n; i++) { cout<<lft[i]<<' '<<rht[i]<<endl; } cout<<endl;*/ return flag; }
#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...