Submission #618285


Source Code Expand

#include <iostream>
#include <climits>
#include <map>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;

#define show(x) cout << #x << "=" << x << endl
#define show2(x,y) cout << #x << "=" << x << "," << #y << "=" << y <<  endl
#define show3(x,y,z) cout << #x << "=" << x << "," << #y << "=" << y << "," << #z << "=" << z <<  endl

typedef long long ll;
ll INF = LONG_MAX/2;

struct edge{
    int from,to,trm;
    ll cost,trmc;
    edge(int _from, int _to, ll _cost, int _trm, ll _trmc) {from=_from; to=_to; cost=_cost; trm=_trm; trmc=_trmc;}
};
typedef pair<ll,int> P;

int V;
vector<edge> G[25260];
ll d[25260];
ll c[25260];

void dijkstra(int s){
    
    priority_queue<P,vector<P>,greater<P>> que; 
    fill(d,d+V,INF);
    d[s]=0;
    que.push(P(0,s));
    
    while(!que.empty()){
        P p = que.top();
        que.pop();
        int v = p.second;
        if(d[v]<p.first) continue;
        for(int i=0; i<G[v].size();i++){
            edge e = G[v][i];
            if(d[e.from] > d[e.to]+e.cost){
                d[e.from] = d[e.to]+e.cost;
                que.push(P(d[e.from],e.from));
            }
        }
    }
}

void dijkstra2(int s){
    
    priority_queue<P,vector<P>,greater<P>> que; 
    fill(c,c+V,INF);
    memset(c, 0x3f, sizeof c);
    c[s]=0;
    que.push(P(0,s));
    
    ll tmp;
    while(!que.empty()){
        P p = que.top();
        que.pop();
        int v = p.second;
        if(c[v]<p.first) continue;
        for(int i=0; i<G[v].size();i++){
            edge e = G[v][i];
            tmp = max(c[e.to]+e.cost, d[e.trm] + e.trmc);
            //show2(d[e.trm] ,e.trmc);
            //show2(c[e.to]+e.cost, d[e.trm] + e.trmc);
            //show(tmp);
            if(c[e.from] > tmp){
                c[e.from] = tmp;
                que.push(P(c[e.from],e.from));
            }
        }
    }
}

int main(){
    
    int N,M,src,dst;
    cin>>N>>M>>src>>dst;
    
    V=N;
    
    int L;
    for(int j=0;j<M;j++){
        cin>>L;
        //cout << L << endl;
        vector<int> s(L);
        vector<ll> W(L);
        for(int i=0;i<L;i++) cin>>s[i]; 
        //for(int j=0;j<L;j++) cout << s[j] << endl;
        for(int i=0;i<L-1;i++) cin>>W[i+1], W[i+1]+=W[i];
        //for(int j=0;j<L;j++) cout << W[j] << endl;
        for(int i=0;i<L-1;i++){
            G[s[i+1]].push_back(edge(s[i], s[i+1], W[i+1]-W[i], s[L-1], W[L-1]-W[i]));
            G[s[i]].push_back(edge(s[i+1], s[i], W[i+1]-W[i], s[0], W[i+1]-W[0]));
            //show3(s[i],s[L-1],W[L-1]-W[i]);
            //show3(s[i+1],s[0],W[i+1]-W[0]);
        }
    }

    dijkstra(dst);
    //for(int i=0;i<N;i++) cout << d[i] << ' '; cout << endl;
    dijkstra2(dst);
    //for(int i=0;i<N;i++) cout << d[i] << ' '; cout << endl;
    //for(int i=0;i<N;i++) cout << c[i] << ' '; cout << endl;
    cout << c[src] << endl;
    return 0;
}

Submission Info

Submission Time
Task C - メンテナンス明け
User universato
Language C++11 (GCC 4.9.2)
Score 100
Code Size 2971 Byte
Status AC
Exec Time 120 ms
Memory 6348 KB

Judge Result

Set Name Subtask1 Subtask2
Score / Max Score 50 / 50 50 / 50
Status
AC × 52
AC × 6
Set Name Test Cases
Subtask1 small/00_sample00, small/00_sample01, small/00_sample02, small/10_small-0000, small/10_small-0001, small/10_small-0002, small/10_small-0003, small/10_small-0004, small/10_small-0005, small/10_small-0006, small/10_small-0007, small/10_small-0008, small/10_small-0009, small/10_small-0010, small/10_small-0011, small/10_small-0012, small/10_small-0013, small/10_small-0014, small/10_small-0015, small/10_small-0016, small/10_small-0017, small/10_small-0018, small/10_small-0019, small/30_max_small, small/40_simple_0000, small/40_simple_0001, small/40_simple_0002, small/40_simple_0003, small/40_simple_0004, small/40_simple_0005, small/40_simple_0006, small/40_simple_0007, small/40_simple_0008, small/40_simple_0009, small/40_simple_0010, small/40_simple_0011, small/40_simple_0012, small/40_simple_0013, small/40_simple_0014, small/40_simple_0015, small/40_simple_0016, small/40_simple_0017, small/40_simple_0018, small/40_simple_0019, small/90_dijkstra_killer_00, small/90_dijkstra_killer_01, small/91_tayama_killer_00, small/91_tayama_killer_01, small/91_tayama_killer_02, small/91_tayama_killer_03, small/91_tayama_killer_04, small/91_tayama_killer_05
Subtask2 large/20_large-00, large/20_large-01, large/20_large-02, large/20_large-03, large/20_large-04, large/31_max_large
Case Name Status Exec Time Memory
large/20_large-00 AC 115 ms 6348 KB
large/20_large-01 AC 120 ms 6228 KB
large/20_large-02 AC 115 ms 6220 KB
large/20_large-03 AC 113 ms 6240 KB
large/20_large-04 AC 114 ms 6224 KB
large/31_max_large AC 60 ms 3792 KB
small/00_sample00 AC 25 ms 1568 KB
small/00_sample01 AC 24 ms 1564 KB
small/00_sample02 AC 24 ms 1696 KB
small/10_small-0000 AC 25 ms 1576 KB
small/10_small-0001 AC 25 ms 1692 KB
small/10_small-0002 AC 27 ms 1692 KB
small/10_small-0003 AC 28 ms 1576 KB
small/10_small-0004 AC 25 ms 1572 KB
small/10_small-0005 AC 25 ms 1564 KB
small/10_small-0006 AC 25 ms 1700 KB
small/10_small-0007 AC 25 ms 1572 KB
small/10_small-0008 AC 25 ms 1568 KB
small/10_small-0009 AC 29 ms 1576 KB
small/10_small-0010 AC 25 ms 1572 KB
small/10_small-0011 AC 25 ms 1576 KB
small/10_small-0012 AC 28 ms 1564 KB
small/10_small-0013 AC 28 ms 1692 KB
small/10_small-0014 AC 26 ms 1632 KB
small/10_small-0015 AC 27 ms 1620 KB
small/10_small-0016 AC 25 ms 1568 KB
small/10_small-0017 AC 26 ms 1576 KB
small/10_small-0018 AC 25 ms 1576 KB
small/10_small-0019 AC 27 ms 1572 KB
small/30_max_small AC 26 ms 1496 KB
small/40_simple_0000 AC 26 ms 1696 KB
small/40_simple_0001 AC 26 ms 1572 KB
small/40_simple_0002 AC 24 ms 1696 KB
small/40_simple_0003 AC 24 ms 1564 KB
small/40_simple_0004 AC 24 ms 1576 KB
small/40_simple_0005 AC 24 ms 1576 KB
small/40_simple_0006 AC 27 ms 1572 KB
small/40_simple_0007 AC 28 ms 1692 KB
small/40_simple_0008 AC 26 ms 1696 KB
small/40_simple_0009 AC 27 ms 1576 KB
small/40_simple_0010 AC 27 ms 1696 KB
small/40_simple_0011 AC 26 ms 1692 KB
small/40_simple_0012 AC 25 ms 1684 KB
small/40_simple_0013 AC 26 ms 1496 KB
small/40_simple_0014 AC 26 ms 1696 KB
small/40_simple_0015 AC 29 ms 1692 KB
small/40_simple_0016 AC 29 ms 1564 KB
small/40_simple_0017 AC 29 ms 1688 KB
small/40_simple_0018 AC 28 ms 1568 KB
small/40_simple_0019 AC 26 ms 1492 KB
small/90_dijkstra_killer_00 AC 26 ms 1496 KB
small/90_dijkstra_killer_01 AC 28 ms 1568 KB
small/91_tayama_killer_00 AC 26 ms 1564 KB
small/91_tayama_killer_01 AC 26 ms 1688 KB
small/91_tayama_killer_02 AC 26 ms 1492 KB
small/91_tayama_killer_03 AC 26 ms 1492 KB
small/91_tayama_killer_04 AC 26 ms 1688 KB
small/91_tayama_killer_05 AC 27 ms 1684 KB