Submission #1589133


Source Code Expand

#include "bits/stdc++.h"
using namespace std;
#define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i))
#define rep(i,j) FOR(i,0,j)
#define each(x,y) for(auto &(x):(y))
#define mp make_pair
#define MT make_tuple
#define all(x) (x).begin(),(x).end()
#define debug(x) cout<<#x<<": "<<(x)<<endl
#define smax(x,y) (x)=max((x),(y))
#define smin(x,y) (x)=min((x),(y))
#define MEM(x,y) memset((x),(y),sizeof (x))
#define sz(x) (int)(x).size()
#define rt return
using dbl = double;
using ll = long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vll = vector<ll>;

// time, who(usa:0, kame:1), pos, start_pos
using P = tuple<ll, int, int, int>;
using E = pair<int, ll>;
vector<E> G[2501];
ll kame[2501];
int vis[2][2501][2501];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    ll N, M, R, T;
    cin >> N >> M >> R >> T;
    rep(i, M) {
        int a, b, c;
        cin >> a >> b >> c;
        --a; --b;
        ll d = R*T*c;
        G[a].push_back({ b,d });
        G[b].push_back({ a,d });
    }

    priority_queue<P, vector<P>, greater<P> > q;
    rep(i, N) {
        rep(j, 2)q.push(P(0, j, i, i));
    }

    ll ans = 0;
    while (sz(q)) {
        ll t;
        int w, u, s;
        tie(t, w, u, s) = q.top();
        q.pop();
        if (vis[w][u][s]++)continue;
        if (u != s) {
            if (w == 0) {
                ans += kame[u];
                // スタート地点が同じ
                if (vis[1][u][s])ans--;
            } else {
                kame[u]++;
            }
        }

        ll x = w == 0 ? R : T;
        each(e, G[u]) {
            int v;
            ll d;
            tie(v, d) = e;
            if (!vis[w][v][s]) {
                q.push(P(t + d / x, w, v, s));
            }
        }
    }

    cout << ans << endl;
}

Submission Info

Submission Time
Task C - ウサギとカメ
User paruki
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1868 Byte
Status AC
Exec Time 6079 ms
Memory 148960 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 18
Set Name Test Cases
Sample subtask0_sample-01.txt, subtask0_sample-02.txt
All subtask0_sample-01.txt, subtask0_sample-02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt
Case Name Status Exec Time Memory
subtask0_sample-01.txt AC 2 ms 2432 KB
subtask0_sample-02.txt AC 2 ms 2432 KB
subtask1_01.txt AC 2 ms 4480 KB
subtask1_02.txt AC 2 ms 4608 KB
subtask1_03.txt AC 2 ms 4608 KB
subtask1_04.txt AC 2 ms 2432 KB
subtask1_05.txt AC 17 ms 5696 KB
subtask1_06.txt AC 41 ms 7032 KB
subtask1_07.txt AC 574 ms 60900 KB
subtask1_08.txt AC 305 ms 23788 KB
subtask1_09.txt AC 1994 ms 82020 KB
subtask1_10.txt AC 1172 ms 45164 KB
subtask1_11.txt AC 933 ms 44268 KB
subtask1_12.txt AC 4432 ms 98788 KB
subtask1_13.txt AC 4456 ms 100068 KB
subtask1_14.txt AC 6079 ms 148064 KB
subtask1_15.txt AC 4442 ms 94692 KB
subtask1_16.txt AC 6025 ms 148960 KB