Submission #957610

#TimeUsernameProblemLanguageResultExecution timeMemory
957610vjudge1Game (APIO22_game)C++17
30 / 100
4024 ms52904 KiB
#include <bits/stdc++.h>
#define f first
#define s second
#define ent '\n'
//#define int long long

#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")

const int dx[]={-1, 1, 0, 0, 0};
const int dy[]={0, 0, 1, -1, 0};
typedef long long ll;
using namespace std;
const int mx=1e6+12;
const int mod=998244353;
const bool T=1;

vector<int> g[mx];
vector<int> e[mx];
vector<int> ord;
bool used[mx];
int comp[mx];
int cnt[mx];
int n,m,k;
int timer;
bool ans;

void init(int N, int K) {
    n=N, k=K;
    timer++;
    for(int i=0;i<k-1;i++){
        g[i].push_back(i+1);
        e[i+1].push_back(i);
    }
}

void dfs(int v){
    used[v]=1;
    for(int to:g[v]){
        if(!used[to]){
            dfs(to);
        }
    }
    ord.push_back(v);
}

void dfs(int v,int c){
    used[v]=1;
    cnt[c]++;
    comp[v]=c;
    for(int to:e[v]){
        if(!used[to]){
            dfs(to, c);
        }
    }
}

int add_teleporter(int u, int v) {
    if(ans){
        return 1;
    }
    if(v==u && v<k){
        ans=1;
        return 1;
    }
    g[u].push_back(v);
    e[v].push_back(u);
    ord.clear();
    for(int i=0;i<=n;i++){
        used[i]=cnt[i]=0;
    }
    for(int i=0;i<n;i++){
        if(!used[i]){
            dfs(i);
        }
    }
    for(int i=0;i<n;i++){
        used[i]=0;
    }
    int N=0;
    reverse(ord.begin(), ord.end());
    for(int v:ord){
        if(!used[v]){
            dfs(v, ++N);
        }
    }
    for(int i=0;i<k;i++){
        if(cnt[comp[i]]>1){
            ans=1;
            return 1;
        }
    }
    return 0;
}

Compilation message (stderr)

game.cpp: In function 'int add_teleporter(int, int)':
game.cpp:70:23: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   70 |         used[i]=cnt[i]=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...