Submission #8058857


Source Code Expand

#include <bits/stdc++.h>
 
#define int         long long
#define uint        unsigned int
#define ld          long double
#define showoff     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb          push_back
#define pii         pair<int,int>
#define FOR(i,a,b)  for(int i=a;i<b;++i)
#define RFOR(i,a,b) for(int i=a;i>b;--i)
#define f           first
#define se          second
#define maxn        200005
#define all(v)      v.begin(),v.end()
#define sz(x)       (int)x.size()
#define mod         1000000007
#define pqueue      priority_queue<int>
#define pdqueue     priority_queue< int,vector<int> ,greater< int >>
 
using namespace std;
 
 
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
 
int power(int a,int n)
{
    a %= mod;
    if(n == 1)return a;
    if(n == 0)return 1;
    if(n%2)return (a*(power((a*a)%mod,n/2)%mod))%mod;
    return power((a*a)%mod,n/2)%mod;
}
const int inf = (int) 1e18;
 
int inverse(int x){
    return power(x,mod-2)%mod;//little fermat....
}
vector<pii>adj[305];
int mark[305],n,m,d[305],fl[305],L,ans[305][305];

void dijkstra(int v){

    fill(d,d + 305, inf);
    fill(fl,fl + 305, 0);
    d[v] = 0;
    fl[v] = L;
    priority_queue<pair<pii,int>,vector<pair<pii,int> >, greater<pair<pii,int> > > pq;
    pq.push({{0,-L}, v});
    while(!pq.empty()){
        int u = pq.top().se,cnt = pq.top().f.f,val = -1*pq.top().f.se;
        pq.pop();
      	if(cnt > d[u] || cnt == d[u] && val < fl[u])continue;
        for(auto &p : adj[u]) 
            if(fl[u] >= p.se){
                if(d[p.f] > d[u] || d[p.f] == d[u] && fl[p.f] < fl[u]-p.se){
                    d[p.f] = d[u];
                    fl[p.f] = fl[u]-p.se;
                    pq.push({{d[p.f],-fl[p.f]},p.f});
                } 
            }
            else {
                if(d[p.f] > d[u]+1 || d[p.f] == d[u]+1 && fl[p.f] < L-p.se){
                    d[p.f] = d[u]+1;
                    fl[p.f] = L-p.se;
                    pq.push({{d[p.f],-fl[p.f]},p.f});
                }   
            }
    }
}

signed main()
{
    showoff;
    cin >> n >> m >> L;
    FOR(i,1,m+1){
        int u,v,w;
        cin >> u >> v >> w;
      	if(w > L)continue;
        adj[u].pb({v,w});
        adj[v].pb({u,w});
    }
    FOR(i,1,n+1){
        dijkstra(i);
        FOR(j,1,n+1)ans[i][j] = d[j];
    }
    int q;
    cin >> q;
    while(q--){
        int x,y;
        cin >> x >> y;
        if(ans[x][y] != inf)cout << ans[x][y] << "\n";
        else cout << "-1\n";
    }
    return 0;

}
//*->for large size of matrix take int not long long if possible......
//*->always take maximum as inf for safer side ....s

Submission Info

Submission Time
Task E - Travel by Car
User MonsterInMe
Language C++14 (GCC 5.4.1)
Score 500
Code Size 2747 Byte
Status AC
Exec Time 1383 ms
Memory 4996 KiB

Judge Result

Set Name Sample All after_contest (0)
Score / Max Score 0 / 0 500 / 500 0 / 0
Status
AC × 3
AC × 50
AC × 1
Set Name Test Cases
Sample 00-sample-00, 00-sample-01, 00-sample-02
All 00-sample-00, 00-sample-01, 00-sample-02, 01-handmade-03, 01-handmade-04, 01-handmade-05, 01-handmade-06, 01-handmade-07, 02-random-08, 02-random-09, 02-random-10, 02-random-11, 02-random-12, 02-random-13, 02-random-14, 02-random-15, 02-random-16, 02-random-17, 02-random-18, 02-random-19, 02-random-20, 02-random-21, 02-random-22, 02-random-23, 02-random-24, 02-random-25, 02-random-26, 02-random-27, 02-random-28, 02-random-29, 02-random-30, 02-random-31, 02-random-32, 02-random-33, 02-random-34, 02-random-35, 02-random-36, 02-random-37, 02-random-38, 02-random-39, 02-random-40, 02-random-41, 02-random-42, 02-random-43, 02-random-44, 02-random-45, 02-random-46, 02-random-47, 02-random-48, 02-random-49
after_contest (0) after_contest_00
Case Name Status Exec Time Memory
00-sample-00 AC 3 ms 256 KiB
00-sample-01 AC 1 ms 256 KiB
00-sample-02 AC 1 ms 256 KiB
01-handmade-03 AC 15 ms 1280 KiB
01-handmade-04 AC 75 ms 3712 KiB
01-handmade-05 AC 68 ms 1408 KiB
01-handmade-06 AC 21 ms 1280 KiB
01-handmade-07 AC 21 ms 1280 KiB
02-random-08 AC 2 ms 384 KiB
02-random-09 AC 5 ms 512 KiB
02-random-10 AC 27 ms 1280 KiB
02-random-11 AC 3 ms 512 KiB
02-random-12 AC 5 ms 640 KiB
02-random-13 AC 9 ms 640 KiB
02-random-14 AC 51 ms 2176 KiB
02-random-15 AC 16 ms 1280 KiB
02-random-16 AC 15 ms 896 KiB
02-random-17 AC 18 ms 1024 KiB
02-random-18 AC 4 ms 512 KiB
02-random-19 AC 1 ms 384 KiB
02-random-20 AC 26 ms 1280 KiB
02-random-21 AC 8 ms 640 KiB
02-random-22 AC 1 ms 256 KiB
02-random-23 AC 27 ms 1408 KiB
02-random-24 AC 102 ms 2304 KiB
02-random-25 AC 27 ms 1280 KiB
02-random-26 AC 2 ms 384 KiB
02-random-27 AC 9 ms 896 KiB
02-random-28 AC 65 ms 1792 KiB
02-random-29 AC 27 ms 1664 KiB
02-random-30 AC 16 ms 1280 KiB
02-random-31 AC 3 ms 512 KiB
02-random-32 AC 11 ms 768 KiB
02-random-33 AC 29 ms 1024 KiB
02-random-34 AC 40 ms 1536 KiB
02-random-35 AC 26 ms 1280 KiB
02-random-36 AC 7 ms 768 KiB
02-random-37 AC 16 ms 896 KiB
02-random-38 AC 1 ms 256 KiB
02-random-39 AC 2 ms 384 KiB
02-random-40 AC 26 ms 1280 KiB
02-random-41 AC 29 ms 1152 KiB
02-random-42 AC 4 ms 640 KiB
02-random-43 AC 122 ms 2304 KiB
02-random-44 AC 1 ms 384 KiB
02-random-45 AC 16 ms 1280 KiB
02-random-46 AC 4 ms 512 KiB
02-random-47 AC 20 ms 1024 KiB
02-random-48 AC 1 ms 256 KiB
02-random-49 AC 11 ms 768 KiB
after_contest_00 AC 1383 ms 4996 KiB