Submission #717978

#TimeUsernameProblemLanguageResultExecution timeMemory
717978vinnipuh01Soccer (JOI17_soccer)C++17
35 / 100
60 ms18944 KiB
#include <iostream> #include <bits/stdc++.h> #include <cmath> #include <algorithm> #include <vector> #include <deque> #include <set> #include <stack> #include <string> #include <map> #include <queue> #define int long long #define sqrt sqrtl using namespace std; const long long oo = 1000000000000000000; long long sum, ans = 0, mx = 0, mn = 1000000000, num, pos; /* ViHHiPuh (( `'-""``""-'` )) )-__-_.._-__-( / --- (o _ o) --- \ \ .-* ( .0. ) *-. / _'-. ,_ '=' _, .-'_ / `;#'#'# - #'#'#;` \ \_)) -----'#'----- ((_/ # --------- # '# ------- ------ #' /..-'# ------- #'-.\ _\...-\'# -- #'/-.../_ ((____)- '#' -(____)) cout << fixed << setprecision(6) << x; ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); freopen ( "sum.in", "r", stdin ) */ int h, w, a, b, c, n, x[ 100001 ], y[ 100001 ]; vector <pair<int, int> > v[ 100001 ]; set <pair<int, int> > st; int d[ 100001 ]; int calc( int i, int j ) { int ans = abs( x[ i ] - x[ j ] ) + abs( y[ i ] - y[ j ] ); ans = ans * c; ans = min( ans, abs( x[ i ] - x[ j] ) * c + a * abs( y[ i ] - y[ j ] ) + b ); ans = min( ans, abs( y[ i ] - y[ j ] ) * c + a * abs( x[ i ] - x[ j ] ) + b ); return ans; } main () { cin >> h >> w >> a >> b >> c >> n; for ( int i = 1; i<= n; i ++ ) { cin >> x[ i ] >> y[ i ]; } if ( n == 2 ) { cout << calc( 1, 2 ); return 0; } for ( int i = 1; i <= n; i ++ ) { for ( int j = i + 1; j <= n; j ++ ) { v[ i ].push_back( { j, calc( i, j ) } ); v[ j ].push_back( { i, calc( i, j ) } ); } d[ i ] = oo; } d[ 1 ] = 0; st.insert( { d[ 1 ], 1 } ); while ( st.size() ) { int u = st.begin()->second; st.erase( st.begin() ); for ( auto to : v[ u ] ) { if ( d[ to.first ] > d[ u ] + to.second ) { st.erase( { d[ to.first ], to.first } ); d[ to.first ] = d[ u ] + to.second; st.insert( { d[ to.first ], to.first } ); } } } // for ( int i = 1; i <= n; i ++ ) // cout << i << " - " << d[ i ] << "\n"; cout << d[ n ]; }

Compilation message (stderr)

soccer.cpp:60:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   60 | main () {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...