Submission #1295953

#TimeUsernameProblemLanguageResultExecution timeMemory
1295953hssaan_arifCrocodile's Underground City (IOI11_crocodile)C++20
0 / 100
8 ms8248 KiB
// #include "crocodile.h"
// #include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<queue>
#include<map>
#include <chrono>
using namespace std;

#define endl "\n"
#define pb push_back
// #define int long long
#define ll long long
#define fi first
#define se second

const int N = 1e6 + 5, M = 1e9 + 7, LG = 20;

// int n , A[N] ,m ,k, u , v , l , R[N][2] , L[N] , P[N];
vector<ll> lis[N];


int travel_plan(int n, int m, int R[][2], int L[], int k, int P[])
{
    int fin = 0;
    ll vi[n] = {} , Dis[N] = {};
    map<pair<ll,ll> , ll> mp , cn;
    for (int i=0 ; i<n ; i++){
        Dis[i] = 1e18;
    }

    clock_t st = clock(), en;
    for (int i=0 ; i<m ; i++){
        int u = R[i][0] , v = R[i][1];
        lis[u].pb(v);
        lis[v].pb(u);
        mp[{u,v}] = mp[{v,u}] = L[i];

        en = clock();
        long double k = (en - st) / double(CLOCKS_PER_SEC);
        if (k >= 1.9)
            cout<<1 / 0;
    }
    priority_queue<pair<ll,ll>> pq;
    en = clock();
    long double k1 = (en - st) / double(CLOCKS_PER_SEC);
    if (k1 >= 1.9)
        cout<<1 / 0;
    for (int i=0 ; i<k ; i++){
        Dis[P[i]] = 0;
        pq.push({0 , -P[i]});
        // cn[P[i]] = 2;
        vi[P[i]] = 1;
        

    }
    
    while(pq.size() && Dis[0] == 1e18){
        int v = -pq.top().se , sr = -pq.top().fi ; pq.pop();
        // fin++;
        
        
        if (vi[v] != 1){
            vi[v]++;
            continue;
        }else{
            Dis[v] = sr;
            vi[v]++;
            for (int u : lis[v]){
                if (cn[{Dis[v] + mp[{v,u}] , u}]>=2 || vi[u]>=2 || Dis[u]!=1e18) continue;
                cn[{Dis[v] + mp[{v,u}] , u}]++;
                pq.push({-Dis[v] + mp[{v,u}] , -u});
            }
            
        }
    }
    // cout << Dis[0] << endl;
    return Dis[0];
}

// int main(){
//     cin >> n >> m >> k;
//     for (int i=0 ; i<m ; i++){
//         cin >> u >> v >> l;
//         R[i][0] = u;
//         R[i][1] = v;
//         L[i] = l;
//     }
//     for (int i=0 ; i<k ; i++){
//         cin >> l;
//         P[i] = l;
//     }

//     cout << travel_plan(n , m , R , L , k , P);
// }

Compilation message (stderr)

crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:42:21: warning: division by zero [-Wdiv-by-zero]
   42 |             cout<<1 / 0;
      |                   ~~^~~
crocodile.cpp:48:17: warning: division by zero [-Wdiv-by-zero]
   48 |         cout<<1 / 0;
      |               ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...