Submission #210220

#TimeUsernameProblemLanguageResultExecution timeMemory
210220mohamedsobhi777Evacuation plan (IZhO18_plan)C++14
41 / 100
4059 ms40852 KiB
#include<bits/stdc++.h> 

using namespace std ; 

const int N = 5e5 + 7 ; 

int n , m , k , q ; 
bool bad[N] ;
int root ;
vector<pair<int , int > > adj[N] ; 
priority_queue<pair<int , int > > Q; 
int d[N] ; 
vector<int> v ; 

void dijkstra(){
    memset(d , -1 , sizeof d) ; 
    for(auto u : v){
        d[u] = 0 ; 
    }
    while(Q.size()){
        int dst = -Q.top().first ; 
        int node = Q.top().second ;
        Q.pop()  ;
        for(auto u : adj[node]){
            if(d[u.first]==-1 || dst + u.second < d[u.first]){

                d[u.first] = dst + u.second ; 
                Q.push({-d[u.first] , u.first}) ; 
            }
        }
    }
}

int B  , t , limit; 
int vis[N] ;

int dfs(int x){
    if(vis[x]==t)
     return 0 ;
    vis[x] = t ; 
    for(auto u : adj[x])
    {
        if(d[u.first] >=limit && vis[u.first] !=t)
        dfs(u.first);
    }
}


int main(){
   // freopen("in.in" , "r" , stdin) ; 
    cin>>n >>m; 
    for(int i = 0 ; i < m ; i++){
        int a , b, c; 
        cin>>a>>b>>c ; 
        adj[a].push_back({b , c}) ; 
        adj[b].push_back({a , c}) ; 
    }
    cin>>k ; 
    for(int i = 0 ; i <k ; i++){
        int a ; 
        cin>>a ; 
        bad[a] = 1 ; 
        v.push_back(a) ; 
        Q.push({0 , a}) ; 
    }
    dijkstra() ; 
    cin>>q ; 
    while(q--){
        int a , b ; 
        cin>>a>>b ; 
        int l = 0 , r = 1e9  , ans =0 ; 
        while(l<=r){
            int mid = (l+r)/2 ; 
            t++ ; 
            B = b ; 
            limit = mid ; 
            dfs(a) ; 
            if(vis[b]==t && d[a] >=limit){
                l = mid + 1 ; 
                ans = mid ; 
            }
            else {
                r = mid  - 1; 
            }
        }
        cout<<ans<<"\n" ; 

    }
    return 0 ; 
}

Compilation message (stderr)

plan.cpp: In function 'int dfs(int)':
plan.cpp:46:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...