Submission #702520

#TimeUsernameProblemLanguageResultExecution timeMemory
7025201075508020060209tcOlympic Bus (JOI20_ho_t4)C++14
5 / 100
1087 ms5220 KiB
//#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define X first
#define Y second

int n;int m;
struct edg{
int x;int y;int cs;int ds;
}es[500005];
vector<int>e[5000];
int dis[5000];int vis[5000];
void dijkstera(int st){
for(int i=0;i<=n;i++){
    dis[i]=1e17;vis[i]=0;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;

pq.push({0,st});
dis[st]=0;
while(pq.size()){
    int nw=pq.top().second;
    pq.pop();
    if(vis[nw]){continue;}
    vis[nw]=1;
    for(int i=0;i<e[nw].size();i++){
        int id=e[nw][i];
        int v=es[id].y;
        if(vis[v]){continue;}
        int cst=es[id].cs;
        dis[v]=min(dis[v],dis[nw]+cst);
        pq.push({dis[v],v});
    }
}



}

int rdis[5010];

signed main(){
cin>>n>>m;

for(int i=1;i<=m;i++){
    int a;int b;int c;int d;
    cin>>a>>b>>c>>d;
    es[i]={a,b,c,d};
    e[a].push_back(i);
    e[b].push_back(i);
}

int ans=1e17;
for(int id=0;id<=m;id++){
swap(es[id].x,es[id].y);
dijkstera(n);
for(int i=1;i<=n;i++){
    rdis[i]=dis[i];
}
dijkstera(1);
swap(es[id].x,es[id].y);
ans=min(ans,dis[n]+rdis[1]+es[id].ds);
}
if(ans<1e17){
    cout<<ans<<endl;
}else{
    cout<<-1;
}


}

Compilation message (stderr)

ho_t4.cpp: In function 'void dijkstera(long long int)':
ho_t4.cpp:27:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for(int i=0;i<e[nw].size();i++){
      |                 ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...