Submission #1130436

#TimeUsernameProblemLanguageResultExecution timeMemory
1130436enzyCommuter Pass (JOI18_commuter_pass)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e5+10;
const int inf=1e18+10;
vector<pair<int,int>>adj[maxn];
int dist[maxn][4], n, marc[maxn], best;
void dijkstra(int x, int t,int dir){
    for(int i=1;i<=n;i++) dist[i][t]=inf;
    dist[x][t]=0;
    set<pair<int,int>>s;
    for(int i=1;i<=n;i++) s.insert({dist[i][t],i});
    while(!s.empty()){
        auto f=s.begin();
        int u=f->second;
        s.erase(f);
        for(auto p : adj[u]){
            int viz=p.first, w=p.second;
            bool flag=false;
            if(dist[u][2]+w+dist[viz][3]==best||dist[u][3]+w+dist[viz][2]==best) flag=true;
            if(flag&&dist[u][dir]+w==dist[viz][dir]&&dist[u][t]<dist[viz][t]){
                // estou usando uma aresta já DIRECIONADA do commuter pass, então passo de graça
                s.erase({dist[viz][t],viz});
                dist[viz][t]=dist[u][t];
                s.insert({dist[viz][t],viz});
            }
            if(dist[u][t]+w<dist[viz][t]){
                // estou utilizando uma aresta normalmente, então tenho que pagar
                s.erase({dist[viz][t],viz});
                dist[viz][t]=dist[u][t]+w;
                s.insert({dist[viz][t],viz});
            }
        }
    }
}
signed main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int m, s, t, u, v; cin >> n >> m >> s >> t >> u >> v;
    for(int i=1;i<=m;i++){
        int a, b, c; cin >> a >> b >> c;
        adj[a].push_back({b,c});
        adj[b].push_back({a,c});
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            for(int k=1;k<=n;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
    int ans=dp[u][v];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
            if(dp[s][i]+dp[i][j]+dp[j][t]==dp[s][t]) ans=min({ans,dp[u][i]+dp[j][v],dp[v][i]+dp[j][u]});
        }
    dijkstra(s,2,0);
    dijkstra(t,3,0);
    best=dist[t][2];
    for(int i=1;i<=n;i++) if(dist[i][2]+dist[i][3]==best) marc[i]++;
    dijkstra(u,0,2); // direcionando todas as arestas do commuter pass de S->T
    dijkstra(u,1,3); // direcionando todas as arestas do commuter pass de T->S
    int resp=min(dist[v][0],dist[v][1]);
    cout << ans << endl;
    //assert(resp>=ans);
    //cout << resp << endl;
    return 0;
} // sub3

Compilation message (stderr)

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:47:35: error: 'dp' was not declared in this scope; did you mean 'dup'?
   47 |             for(int k=1;k<=n;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
      |                                   ^~
      |                                   dup
commuter_pass.cpp:48:13: error: 'dp' was not declared in this scope; did you mean 'dup'?
   48 |     int ans=dp[u][v];
      |             ^~
      |             dup
commuter_pass.cpp:51:61: error: no matching function for call to 'min(<brace-enclosed initializer list>)'
   51 |             if(dp[s][i]+dp[i][j]+dp[j][t]==dp[s][t]) ans=min({ans,dp[u][i]+dp[j][v],dp[v][i]+dp[j][u]});
      |                                                          ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from commuter_pass.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
commuter_pass.cpp:51:61: note:   candidate expects 2 arguments, 1 provided
   51 |             if(dp[s][i]+dp[i][j]+dp[j][t]==dp[s][t]) ans=min({ans,dp[u][i]+dp[j][v],dp[v][i]+dp[j][u]});
      |                                                          ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from commuter_pass.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
commuter_pass.cpp:51:61: note:   candidate expects 3 arguments, 1 provided
   51 |             if(dp[s][i]+dp[i][j]+dp[j][t]==dp[s][t]) ans=min({ans,dp[u][i]+dp[j][v],dp[v][i]+dp[j][u]});
      |                                                          ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3449:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3449 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3449:5: note:   template argument deduction/substitution failed:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   template argument deduction/substitution failed: