Submission #3563704


Source Code Expand

#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int INF = 1e9;
const ll LINF = 1e18;
inline ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
inline ll lcm(ll a, ll b) { return a / gcd(a, b)*b; }
template<class S,class T> ostream& operator << (ostream& out,const pair<S,T>& o){ out << "(" << o.first << "," << o.second << ")"; return out; }
template<class T> ostream& operator << (ostream& out,const vector<T> V){ for(int i = 0; i < V.size(); i++){ out << V[i]; if(i!=V.size()-1) out << " ";} return out; }
template<class T> ostream& operator << (ostream& out,const vector<vector<T> > Mat){ for(int i = 0; i < Mat.size(); i++) { if(i != 0) out << endl; out << Mat[i];} return out; }
template<class S,class T> ostream& operator << (ostream& out,const map<S,T> mp){ out << "{ "; for(auto it = mp.begin(); it != mp.end(); it++){ out << it->first << ":" << it->second; if(mp.size()-1 != distance(mp.begin(),it)) out << ", "; } out << " }"; return out; }

/*
 <url:>
 問題文============================================================
 =================================================================
 解説=============================================================
 ================================================================
 */

struct edge{
    int u,v,cost;
    edge(){}
    edge(int u,int v,int cost):u(u),v(v),cost(cost){}
};
ll solve(){
    ll res = 0;
    int N,M,R,T; cin >> N >> M >> R >> T;
    vector<vector<edge>> G(N);
    for(int i = 0; i < M;i++){
        int a,b,c; cin >> a >> b >> c;
        a--; b--;
        G[a].push_back(edge(a,b,c));
        G[b].push_back(edge(b,a,c));
    }
    queue<int> q;
    for(int A = 0; A < N;A++){
        vector<int> dist(N,INF);
        dist[A] = 0;
        q.push(A);
        while(q.size()){
            int n = q.front(); q.pop();
            for(auto& e:G[n]){
                if(dist[e.v] > dist[e.u] + e.cost){
                    dist[e.v] = dist[e.u] + e.cost;
                    q.push(e.v);
                }
            }
        }
        
        vector<int> distT(N);
        vector<int> distR(N);
        
        for(int i = 0; i < N;i++){
            distT[i] = dist[i] * R;
            distR[i] = dist[i] * T;
        }
//        cout << A << endl;
//        cout << distT << endl;
//        cout << distR << endl;
        
        auto distRR = distR;
        sort(distR.begin(),distR.end());
        for(int B = 0; B < N; B++){
            if(A == B) continue;
            ll V = distT[B];
            ll P = N - (upper_bound(distR.begin(),distR.end(),V) - distR.begin());
            if(V < distRR[B]) P--;
            if(V < distRR[A]) P--;
            res += P;
        }
    }
    return res;
}
int main(void) {
    cin.tie(0); ios_base::sync_with_stdio(false);
    cout << solve() << endl;
    return 0;
}

Submission Info

Submission Time
Task C - ウサギとカメ
User vjudge3
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2876 Byte
Status AC
Exec Time 768 ms
Memory 512 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 1 ms 256 KB
subtask0_sample-02.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 4 ms 256 KB
subtask1_06.txt AC 5 ms 256 KB
subtask1_07.txt AC 19 ms 384 KB
subtask1_08.txt AC 22 ms 384 KB
subtask1_09.txt AC 182 ms 384 KB
subtask1_10.txt AC 169 ms 384 KB
subtask1_11.txt AC 75 ms 384 KB
subtask1_12.txt AC 709 ms 512 KB
subtask1_13.txt AC 719 ms 512 KB
subtask1_14.txt AC 748 ms 512 KB
subtask1_15.txt AC 410 ms 512 KB
subtask1_16.txt AC 768 ms 512 KB