Submission #379075

# Submission time Handle Problem Language Result Execution time Memory
379075 2021-03-17T09:13:03 Z Atill83 Robot (JOI21_ho_t4) C++14
58 / 100
3000 ms 105256 KB
#include <bits/stdc++.h>
#define ff first
#define ss second
#define endl '\n'
using namespace std;
const long long INF = (long long) 1e18;
const int mod = (int) 1e9+7;
const int MAXN = (int) 3e5+5;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
ll n, m;
typedef pair<ll, pii> tp;
unordered_map<int, ll> mp[MAXN];
unordered_map<int, ll> dp2[MAXN];
ll dp[MAXN];
unordered_map<int, vector<pll>> adj[MAXN];
int c[MAXN], p[MAXN];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);

    #ifdef Local
        freopen("C:/Users/Admin/Desktop/Yazilim/C/IO/int.txt","r",stdin);
        freopen("C:/Users/Admin/Desktop/Yazilim/C/IO/out.txt","w",stdout);
    #endif

    cin>>n>>m;
    for(int i = 1; i <= m; i++){
        int a, b, C, P;
        cin>>a>>b>>C>>P;
        
        mp[a][C] += P;
        mp[b][C] += P;

        adj[a][C].push_back({b, P});
        adj[b][C].push_back({a, P});
    }

    memset(dp, 0x7f, sizeof(dp));
    priority_queue<tp, vector<tp>, greater<tp>> pq;

    pq.push({0, {1, 0}});
    dp[1] = 0;

    while(!pq.empty()){
        tp cur = pq.top();
        pq.pop();
        int col = cur.ss.ss, node = cur.ss.ff;
        ll dist = cur.ff;
        if(cur.ss.ss != 0){
            if(dp2[node][col] < dist)
                continue;
            dp2[node][col] = dist;
            for(pii u: adj[node][col]){
                ll sum = dist + mp[node][col] - u.ss;
                if(dp[u.ff] > sum){
                    dp[u.ff] = sum;
                    pq.push({sum, {u.ff, 0}});
                }
            }
        }else{
            for(auto &y: adj[node]){
                for(auto edg: y.ss){
                    ll d1 = dist + mp[node][y.ff] - edg.ss;
                    if(d1 < dp[edg.ff]){
                        dp[edg.ff] = d1;
                        pq.push({d1, {edg.ff, 0}});
                    }

                    ll d2 = dist + edg.ss;
                    if(d2 < dp[edg.ff]){
                        dp[edg.ff] = d2;
                        pq.push({d2, {edg.ff, 0}});
                    }

                    ll d3 = dist;

                    if(!dp2[edg.ff].count(y.ff) || dist < dp2[edg.ff][y.ff]){
                        dp2[edg.ff][y.ff] = dist;
                        pq.push({d3, {edg.ff, y.ff}});
                    }
                }
            }
        }
    }

    cout<<(dp[n] > INF ? -1 : dp[n])<<endl;


    #ifdef Local
        cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds ";
    #endif
}
# Verdict Execution time Memory Grader output
1 Correct 38 ms 51948 KB Output is correct
2 Correct 37 ms 51948 KB Output is correct
3 Correct 37 ms 51948 KB Output is correct
4 Correct 36 ms 52096 KB Output is correct
5 Correct 39 ms 52076 KB Output is correct
6 Correct 37 ms 51948 KB Output is correct
7 Correct 39 ms 52076 KB Output is correct
8 Correct 37 ms 52204 KB Output is correct
9 Correct 40 ms 52588 KB Output is correct
10 Correct 44 ms 52460 KB Output is correct
11 Correct 45 ms 52332 KB Output is correct
12 Correct 39 ms 52332 KB Output is correct
13 Correct 40 ms 52460 KB Output is correct
14 Correct 45 ms 52332 KB Output is correct
15 Correct 45 ms 52332 KB Output is correct
16 Correct 46 ms 52332 KB Output is correct
17 Correct 39 ms 52332 KB Output is correct
18 Correct 38 ms 52204 KB Output is correct
19 Correct 39 ms 52204 KB Output is correct
20 Correct 40 ms 52332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 365 ms 67324 KB Output is correct
2 Correct 157 ms 59876 KB Output is correct
3 Correct 419 ms 64360 KB Output is correct
4 Correct 209 ms 62308 KB Output is correct
5 Correct 925 ms 105256 KB Output is correct
6 Correct 844 ms 102936 KB Output is correct
7 Correct 577 ms 91644 KB Output is correct
8 Correct 579 ms 86124 KB Output is correct
9 Correct 642 ms 86124 KB Output is correct
10 Correct 536 ms 79972 KB Output is correct
11 Correct 217 ms 69228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 38 ms 51948 KB Output is correct
2 Correct 37 ms 51948 KB Output is correct
3 Correct 37 ms 51948 KB Output is correct
4 Correct 36 ms 52096 KB Output is correct
5 Correct 39 ms 52076 KB Output is correct
6 Correct 37 ms 51948 KB Output is correct
7 Correct 39 ms 52076 KB Output is correct
8 Correct 37 ms 52204 KB Output is correct
9 Correct 40 ms 52588 KB Output is correct
10 Correct 44 ms 52460 KB Output is correct
11 Correct 45 ms 52332 KB Output is correct
12 Correct 39 ms 52332 KB Output is correct
13 Correct 40 ms 52460 KB Output is correct
14 Correct 45 ms 52332 KB Output is correct
15 Correct 45 ms 52332 KB Output is correct
16 Correct 46 ms 52332 KB Output is correct
17 Correct 39 ms 52332 KB Output is correct
18 Correct 38 ms 52204 KB Output is correct
19 Correct 39 ms 52204 KB Output is correct
20 Correct 40 ms 52332 KB Output is correct
21 Correct 365 ms 67324 KB Output is correct
22 Correct 157 ms 59876 KB Output is correct
23 Correct 419 ms 64360 KB Output is correct
24 Correct 209 ms 62308 KB Output is correct
25 Correct 925 ms 105256 KB Output is correct
26 Correct 844 ms 102936 KB Output is correct
27 Correct 577 ms 91644 KB Output is correct
28 Correct 579 ms 86124 KB Output is correct
29 Correct 642 ms 86124 KB Output is correct
30 Correct 536 ms 79972 KB Output is correct
31 Correct 217 ms 69228 KB Output is correct
32 Correct 382 ms 65440 KB Output is correct
33 Correct 378 ms 66408 KB Output is correct
34 Correct 845 ms 81756 KB Output is correct
35 Correct 587 ms 74716 KB Output is correct
36 Correct 521 ms 82164 KB Output is correct
37 Correct 534 ms 84640 KB Output is correct
38 Correct 574 ms 91116 KB Output is correct
39 Correct 377 ms 69184 KB Output is correct
40 Correct 622 ms 87692 KB Output is correct
41 Correct 701 ms 87812 KB Output is correct
42 Correct 828 ms 91484 KB Output is correct
43 Correct 401 ms 70240 KB Output is correct
44 Correct 856 ms 76640 KB Output is correct
45 Correct 488 ms 83692 KB Output is correct
46 Correct 409 ms 82944 KB Output is correct
47 Execution timed out 3079 ms 84524 KB Time limit exceeded
48 Halted 0 ms 0 KB -