Submission #1026751

# Submission time Handle Problem Language Result Execution time Memory
1026751 2024-07-18T10:36:28 Z dozer Game (IOI14_game) C++14
15 / 100
3 ms 604 KB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
#define sp " "
#define endl "\n"
#define fileio() freopen("input.txt", "r", stdin), freopen("output.txt","w", stdout)
#define fastio() cin.tie(0), ios_base::sync_with_stdio(0)
#define pb push_back
#define pii pair<int, int>
#define st first
#define nd second
#define LL node * 2
#define RR node * 2
#define mid (l + r) / 2
#define ll long long
#define MAXN 15

const int modulo = 1e9 + 7;
const ll INF = 2e18 +7;


int N;
bitset<MAXN> adj[MAXN];
set<int> child[MAXN];
int par[MAXN], tin[MAXN], tout[MAXN], cntr;

void initialize(int n) {
    N = n;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++) adj[i].set(j, 1);
    }
    for (int i = 1; i < n; i++){
        child[0].insert(i);
        child[i].insert(0);
        par[i] = 0;
    }
    par[0] = -1;
}


void dfs(int node, int root){
   // cout<<node<<sp<<root<<endl;
    par[node] = root;
    tin[node] = ++cntr;
    for (auto  i : child[node]){
        if (i == root) continue;
        dfs(i, node);
    }
    tout[node] = cntr;
}

void sub(int node, int root, bitset<MAXN> &b){
    b |= adj[node];
    for (auto i : child[node]){
        if (i == root) continue;
        sub(i, node, b);
    }
}


int hasEdge(int u, int v) {
    cntr = 0;
    dfs(0, -1);
    adj[u].set(v, 0);
    adj[v].set(u, 0);
    if (par[u] != v && par[v] != u){
        return 0;
    }

    child[u].erase(v);
    child[v].erase(u);

    if (par[v] == u) swap(v, u);

    bitset<MAXN> to;
    to.reset();
    sub(u, v, to);
    int parr = -1;
    for (int i = 0; i < N; i++){
        if (tin[i] >= tin[u] && tout[i] <= tout[u]) continue;
        if (to[i] == 1){
            parr = i;
            break;
        }
    }

    if (parr == -1){
        adj[u][v] = 1;
        adj[v][u] = 1;
        child[u].insert(v);
        child[v].insert(u);
        return 1;  
    }


    int c = -1;
    for (int i = 0; i < N; i++){
        if (tin[i] >= tin[u] && tout[i] <= tout[u] && adj[i][parr] == 1){
            c = i;
            break;
        }
    }


    child[parr].insert(c);
    child[c].insert(parr);
    return 0;
}



# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 344 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Runtime error 3 ms 604 KB Execution killed with signal 6
26 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 600 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 600 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 344 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Runtime error 2 ms 604 KB Execution killed with signal 6
26 Halted 0 ms 0 KB -