Submission #207084

#TimeUsernameProblemLanguageResultExecution timeMemory
207084SaboonOlympic Bus (JOI20_ho_t4)C++14
37 / 100
1045 ms12848 KiB
// In the name of Allah 
// There is no power but from God the Almighty 
// No God except Allah 
#include <bits/stdc++.h> 
#define mp make_pair 
#define f1 first 
#define f2 second 
#define pb push_back 
#define pii pair<int ,int> 
#define ios  ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 
using namespace std; 
const int mox=2e2+9; 
vector<pair< pair<int , long long > ,int > > v[mox][2]; 
bool ok[50009]; 
set<pii> s; 
long long d[mox][17*mox]; 
int dad[mox][17*mox]; 
long long po[50009]; 
vector<pair<pii , int > > g; 
int n,m; 
void dj(int o,int y ,int no,int q) 
{ 
      s.insert({0,y}); 
     for(int i=1 ; i<=n ; i++) 
      d[i][o]=1e10; 
     d[y][o]=0; 
     while(s.empty()==0) 
     { 
         int x=s.begin()->f2; 
         s.erase(s.begin()); 
         for(pair<pii,int> i:v[x][q]) 
         { 
             if(d[i.f1.f1][o]>d[x][o]+i.f1.f2&&i.f2!=no) 
             { 
                 s.erase({d[i.f1.f1][o],i.f1.f1}); 
                 d[i.f1.f1][o]=d[x][o]+i.f1.f2; 
                 s.insert({d[i.f1.f1][o],i.f1.f1}); 
               dad[i.f1.f1][o]=i.f2; 
             } 
         } 
     } 
} 
 main() 
 {  ios 
int subbbb; 
     cin>>n>>m; 
     for(int i=0 ; i<m ; i++) 
     { 
         int a,b,c,e; 
         cin>>a>>b>>c>>e; 
         v[a][0].pb({{b,c},i}); 
         v[b][1].pb({{a,c},i}); 
         po[i]=e; 
         g.pb({{a,b},c}); 
     } 
     dj(0,1,-1,0); 
     dj(1,n,-1,0); 
     dj(2,1,-1,1); 
     dj(3,n,-1,1); 
         for(int j=1 ; j<=n ; j++) 
         { 
             ok[dad[j][0]]=1; 
             ok[dad[j][1]]=1; 
             ok[dad[j][2]]=1; 
             ok[dad[j][3]]=1; 
         } 
     long long ans=d[1][1]+d[n][0]; 
     int w=4; 
     for(int i=0 ; i<m ; i++) 
     { 
       if(ok[i]==1) 
       { 
        dj(w,1,i,0); 
        w++; 
        dj(w,n,i,0); 
        w++; 
        dj(w,1,i,1); 
        w++; 
        dj(w,n,i,1); 
        w++; 
       long long x=d[g[i].f1.f2][w-4]+d[g[i].f1.f1][w-1]+g[i].f2; 
       long long y=d[g[i].f1.f2][w-3]+d[g[i].f1.f1][w-2]+g[i].f2; 
       long long p=(x+y+po[i]); 
           ans=min(ans,p); 
          ans=min(x+d[1][w-3]+po[i],ans); 
          ans=min(y+d[n][w-4]+po[i],ans); 
 
       } 
       else
       { 
       long long x=d[g[i].f1.f2][0]+d[g[i].f1.f1][3]+g[i].f2; 
       long long  y=d[g[i].f1.f2][1]+d[g[i].f1.f1][2]+g[i].f2; 
       long long p=(x+y+po[i]); 
        ans=min(ans,p); 
        ans=min(x+d[1][1]+po[i],ans); 
        ans=min(y+d[n][0]+po[i],ans); 
       } 
 
     } 
     if(ans<1e10) 
     cout<<ans; 
     else
        cout<<-1; 
 } 

Compilation message (stderr)

ho_t4.cpp:43:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  main() 
       ^
ho_t4.cpp: In function 'int main()':
ho_t4.cpp:45:5: warning: unused variable 'subbbb' [-Wunused-variable]
 int subbbb; 
     ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...