Submission #1173765

#TimeUsernameProblemLanguageResultExecution timeMemory
1173765pinrueiJakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
1101 ms172504 KiB
#pragma region //           https://oj.uz/problem/view/IOI08_printer
#include<bits/stdc++.h>
#define int long long
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma comment(linker, "/stack:200000000")
#define f2(i, m) for(int i=0; i<m; i++)
#define f21(i, m) for(int i=1; i<m; i++)
#define f3(i, n, m) for(int i=n; i<m; i++)
#define f2_(i, m) for(int i=m; i>-1; i--)
#define f21_(i, m) for(int i=m; i>0; i--)
#define f3_(i, n, m) for(int i=n; i>=m; i--)
#define travG(idx) for(int i : g[idx])
#define travG_(i, idx) for(int i : g[idx])
#define trav(loop) for(int i : loop)
#define trav_(i, loop) for(int i : loop)
#define trav2(loop, idx) for(int i : loop[idx])
#define trav2_(i, loop, idx) for(int i : loop[idx])
#define ll long long
#define bs bitset
#define pii pair<int, int>
#define vi vector<int>
#define vvi vector<vector<int>>
#define ve vector<element>
#define ve_ vector<element_>
#define vpii vector<pair<int, int>>
#define dqi deque<int>
#define dqpii deque<pii>
#define qi queue<int>
#define qe queue<element>
#define qpii queue<pair<int, int>>
#define si stack<int>
#define se stack<element>
#define spii stack<pair<int, int>>
#define vb vector<bool>
#define pqi priority_queue<int>
#define pqi_ priority_queue<int, vi, greater<int>>
#define pqpii priority_queue<pair<int, int>>
#define pqpii_ priority_queue<pair<int, int>, vpii, greater<pii>>
#define pb push_back
#define pf push_front
#define pob pop_back()
#define pof pop_front()
#define len length()
#define elif else if
#define mod 1000000007
#pragma endregion

//#define debug
/*
#ifdef debug
#endif
#ifndef debug
#endif
*/
using namespace std;

constexpr int mxn=3e4+1, mxq=3e4+1;
constexpr bool debug = 0;
int n, m, srt, stp;
set<int> e[mxn];

void bfs()
{
    struct node
    {
        int u, v, dis;
        node(int u, int v, int d) : u(u), v(v), dis(d) {}
    };
    
    unordered_map<int, int> dis[mxn];
    deque<node> dq;
    bitset<mxn> vis;
    for(int i : e[srt])
    {
        dq.pb(node(srt, i, 0));
    }
    vis[srt] = 1;

    while(!dq.empty())
    {
        node cur = dq.front(); dq.pof;
        if(debug)
        {
            cout<<cur.u<<' '<<cur.v<<' '<<cur.dis<<'\n';
        }

        if(cur.u == stp)
        {
            cout << cur.dis;
            return;
        }
        if(!vis[cur.u])
        {
            for(int i : e[cur.u])
            {
                if(dis[cur.u][i]==0 || cur.dis<dis[cur.u][i])
                {
                    vis[cur.u] = 1;
                    dis[cur.u][i] = cur.dis;
                    dq.pf(node(cur.u, i, cur.dis));
                }
            }
        }
        f2(i, 2)
        {
            int nxt=i?+cur.v:-cur.v; nxt+=cur.u;
            if(nxt>=0 && nxt<n && (dis[nxt][cur.v]==0 || cur.dis+1<dis[nxt][cur.v]))
            {
                dis[nxt][cur.v] = cur.dis+1;
                dq.pb(node(nxt, cur.v, cur.dis+1));
            } 
        }
    }
    cout << -1;
}

signed main()//         https://oj.uz/problem/view/APIO16_boat
{   ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    
    //input
    {
        cin >> n >> m;
        f2(i, m)
        {
            int u, v; cin>>u>>v;
            e[u].insert(v);
            i<2 && ((i?stp:srt) = u);
        }
    }

    bfs();
    return 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...