제출 #1167485

#제출 시각아이디문제언어결과실행 시간메모리
1167485Malix게임 (APIO22_game)C++20
0 / 100
0 ms408 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> tii; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) const ll INF=1000000000000000010; const int inf=1e9+10; const ll M=1e9+7; int n,k; vii a,b; vi p,q,arr; void dfs1(int x,int y){ arr.PB(x); p[x]=y; for(auto u:a[x])if(p[u]<y)dfs1(u,y); } void dfs2(int x,int y){ arr.PB(x); q[x]=y; for(auto u:b[x])if(q[u]>y)dfs2(u,y); } void init(int N, int K) { n=N;k=K; a.resize(n); b.resize(n); p.resize(n,-1); q.resize(n,inf); REP(i,0,k)p[i]=i; REP(i,0,k)q[i]=i; } int add_teleporter(int u, int v) { if(u>=v&&u<k)return 1; if(u<k&&v<k)return 0; arr.clear(); a[u].PB(v); b[v].PB(u); if(p[u]>p[v])dfs1(v,p[u]); if(q[u>q[v]])dfs2(u,q[v]); bool flag=0; for(auto u:arr)if(q[u]<=p[u])flag=1; 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...