Submission #616739


Source Code Expand

#include <cstdio>
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <string.h>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <map>
#include <set>
#include <iostream>
#include <sstream>
#include <numeric>
#include <cctype>
#include <bitset>
#define fi first
#define se second
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define rrep(i,n) for(int i = 1; i <= (n); ++i)
#define drep(i,n) for(int i = (n)-1; i >= 0; --i)
#define gep(i,g,j) for(int i = g.head[j]; i != -1; i = g.e[i].next)
#define each(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
#define rng(a) a.begin(),a.end()
#define maxs(x,y) x = max(x,y)
#define mins(x,y) x = min(x,y)
#define pb push_back
#define sz(x) (int)(x).size()
#define pcnt __builtin_popcount
#define snuke srand((unsigned)clock()+(unsigned)time(NULL));
#define df(x) int x = in()
using namespace std;
typedef long long int ll;
typedef pair<int,int> P;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef vector<P> vp;
inline int in() { int x; scanf("%d",&x); return x;}
inline void priv(vi a) { rep(i,sz(a)) printf("%d%c",a[i],i==sz(a)-1?'\n':' ');}

const int MX = 25305, INF = 1001001001;
const ll LINF = 1e18;
const double eps = 1e-10;

int n, m, sv, tv;

vi to[MX], co[MX];
vi eto[MX], eco[MX];

vi dist;

bool f(int c) {
  vi ds(n,INF);
  ds[sv] = 0;
  priority_queue<P,vp,greater<P>> q;
  q.push(P(0,sv));
  while (sz(q)) {
    P p = q.top(); q.pop();
    int d = p.fi;
    int v = p.se;
    if (ds[v] < d) continue;
    rep(i,sz(to[v])) {
      int u = to[v][i];
      int nd = d+co[v][i];
      int eu = eto[v][i];
      int ed = d+eco[v][i]+dist[eu];
      if (ed <= c && nd < ds[u]) {
        ds[u] = nd;
        q.push(P(nd,u));
      }
    }
  }
  return ds[tv] <= c;
}

int main() {
  scanf("%d%d%d%d",&n,&m,&sv,&tv);
  rep(mi,m) {
    int l;
    scanf("%d",&l);
    vi v(l);
    rep(i,l) scanf("%d",&v[i]);
    vi c(l-1);
    rep(i,l-1) scanf("%d",&c[i]);
    int sum = 0;
    int tot = 0;
    rep(i,l-1) tot += c[i];
    rep(i,l-1) {
      int a = v[i], b = v[i+1];
      to[a].pb(b); co[a].pb(c[i]);
      to[b].pb(a); co[b].pb(c[i]);
      eto[a].pb(v.back()); eco[a].pb(tot-sum);
      sum += c[i];
      eto[b].pb(v[0]); eco[b].pb(sum);
    }
  }
  dist = vi(n,INF);
  dist[tv] = 0;
  priority_queue<P,vp,greater<P>> q;
  q.push(P(0,tv));
  while (sz(q)) {
    P p = q.top(); q.pop();
    int d = p.fi;
    int v = p.se;
    if (dist[v] < d) continue;
    rep(i,sz(to[v])) {
      int u = to[v][i];
      int nd = d+co[v][i];
      if (nd < dist[u]) {
        dist[u] = nd;
        q.push(P(nd,u));
      }
    }
  }
  // priv(dist);
  // cout<<f(6)<<endl; return 0;
  int l = 0, r = INF;
  while (l+1<r) {
    int c = (l+r)>>1;
    if (f(c)) r = c; else l = c;
  }
  cout<<r<<endl;
  return 0;
}




Submission Info

Submission Time
Task C - メンテナンス明け
User snuke
Language C++11 (GCC 4.9.2)
Score 100
Code Size 3014 Byte
Status AC
Exec Time 321 ms
Memory 7496 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:80:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d%d",&n,&m,&sv,&tv);
                                  ^
./Main.cpp:83:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&l);
                   ^
./Main.cpp:85:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     rep(i,l) scanf("%d",&v[i]);
                               ^
./Main.cpp:87:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     rep(i,l-1) scanf("%d",&c[i]);
                                 ^

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 290 ms 7496 KB
large/20_large-01 AC 291 ms 7492 KB
large/20_large-02 AC 314 ms 7484 KB
large/20_large-03 AC 285 ms 7476 KB
large/20_large-04 AC 321 ms 7488 KB
large/31_max_large AC 77 ms 6560 KB
small/00_sample00 AC 30 ms 3100 KB
small/00_sample01 AC 29 ms 3112 KB
small/00_sample02 AC 28 ms 3108 KB
small/10_small-0000 AC 30 ms 3156 KB
small/10_small-0001 AC 31 ms 3104 KB
small/10_small-0002 AC 30 ms 3168 KB
small/10_small-0003 AC 30 ms 3104 KB
small/10_small-0004 AC 31 ms 3100 KB
small/10_small-0005 AC 30 ms 3224 KB
small/10_small-0006 AC 30 ms 3324 KB
small/10_small-0007 AC 31 ms 3224 KB
small/10_small-0008 AC 31 ms 3108 KB
small/10_small-0009 AC 31 ms 3224 KB
small/10_small-0010 AC 30 ms 3108 KB
small/10_small-0011 AC 31 ms 3108 KB
small/10_small-0012 AC 31 ms 3112 KB
small/10_small-0013 AC 29 ms 3104 KB
small/10_small-0014 AC 31 ms 3108 KB
small/10_small-0015 AC 30 ms 3104 KB
small/10_small-0016 AC 31 ms 3160 KB
small/10_small-0017 AC 30 ms 3232 KB
small/10_small-0018 AC 29 ms 3224 KB
small/10_small-0019 AC 29 ms 3104 KB
small/30_max_small AC 28 ms 3104 KB
small/40_simple_0000 AC 30 ms 3108 KB
small/40_simple_0001 AC 29 ms 3100 KB
small/40_simple_0002 AC 28 ms 3100 KB
small/40_simple_0003 AC 30 ms 3104 KB
small/40_simple_0004 AC 28 ms 3100 KB
small/40_simple_0005 AC 30 ms 3096 KB
small/40_simple_0006 AC 29 ms 3160 KB
small/40_simple_0007 AC 29 ms 3108 KB
small/40_simple_0008 AC 29 ms 3108 KB
small/40_simple_0009 AC 27 ms 3228 KB
small/40_simple_0010 AC 29 ms 3100 KB
small/40_simple_0011 AC 28 ms 3216 KB
small/40_simple_0012 AC 30 ms 3104 KB
small/40_simple_0013 AC 31 ms 3104 KB
small/40_simple_0014 AC 30 ms 3088 KB
small/40_simple_0015 AC 27 ms 3228 KB
small/40_simple_0016 AC 29 ms 3116 KB
small/40_simple_0017 AC 27 ms 3104 KB
small/40_simple_0018 AC 28 ms 3108 KB
small/40_simple_0019 AC 27 ms 3108 KB
small/90_dijkstra_killer_00 AC 29 ms 3232 KB
small/90_dijkstra_killer_01 AC 30 ms 3104 KB
small/91_tayama_killer_00 AC 29 ms 3220 KB
small/91_tayama_killer_01 AC 28 ms 3124 KB
small/91_tayama_killer_02 AC 30 ms 3160 KB
small/91_tayama_killer_03 AC 29 ms 3224 KB
small/91_tayama_killer_04 AC 28 ms 3220 KB
small/91_tayama_killer_05 AC 29 ms 3108 KB