Submission #821234

#TimeUsernameProblemLanguageResultExecution timeMemory
821234HanksburgerGame (APIO22_game)C++17
30 / 100
4027 ms12364 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
int tin[300005], mn[300005], ins[300005], scc[300005], n, k, t;
vector<int> adj[300005];
stack<int> s;
void init(int nn, int kk)
{
    n=nn;
    k=kk;
    for (int i=0; i<=k-2; i++)
        adj[i].push_back(i+1);
}
void dfs(int u)
{
    tin[u]=mn[u]=(++t);
    ins[u]=1;
    s.push(u);
    for (int v:adj[u])
    {
        if (!tin[v])
        {
            dfs(v);
            mn[u]=min(mn[u], mn[v]);
        }
        else if (ins[v])
            mn[u]=min(mn[u], tin[v]);
    }
    if (tin[u]==mn[u])
    {
        vector<int> vec;
        while (s.top()!=u)
        {
            vec.push_back(s.top());
            ins[s.top()]=0;
            s.pop();
        }
        vec.push_back(s.top());
        ins[s.top()]=0;
        s.pop();
        for (int i=0; i<vec.size(); i++)
            scc[vec[i]]=vec.size();
    }
}
int add_teleporter(int u, int v)
{
    if (u==v)
        return (u<k);
    adj[u].push_back(v);
    for (int i=0; i<n; i++)
        tin[i]=mn[i]=ins[i]=scc[i]=0;
    t=0;
    dfs(0);
    for (int i=0; i<k; i++)
        if (scc[i]>1)
            return 1;
    return 0;
}

Compilation message (stderr)

game.cpp: In function 'void dfs(int)':
game.cpp:41:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |         for (int i=0; i<vec.size(); i++)
      |                       ~^~~~~~~~~~~
#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...