Submission #1552039
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned __int128 HASH;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
typedef pair<ull, ull> pullull;
typedef pair<ll,int> plli;
typedef pair<double, int> pdbi;
typedef pair<int,pii> pipii;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<pii> vpii;
#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n);i>0;i--)
#define rrep2(i,a,b) for (int i=(a);i>b;i--)
#define pb push_back
#define fi first
#define se second
#define all(a) (a).begin(),(a).end()
const ll hmod1 = 999999937;
const ll hmod2 = 1000000000 + 9;
const ll INF = 1<<30;
const ll mod = 1000000000 + 7;
const int dx4[4] = {1, 0, -1, 0};
const int dy4[4] = {0, 1, 0, -1};
const int dx8[8] = {1, 1, 1, 0, 0, -1, -1, -1};
const int dy8[8] = {0, 1, -1, 1, -1, 0, 1, -1};
const double pi = 3.141592653589793;
int n, m, s, tar;
struct edge{int to, cost;};
vector<vector<edge>> g(100000+5);
int a[100000 + 5], b[100000 + 5], c[100000 + 5];
vector<ll> dijkstra(int s, int n, vector<vector<edge>>& g){
priority_queue<plli, vector<plli>, greater<plli>> que;
vector<ll> d(n, LLONG_MAX / 10); d[s] = 0;
que.push(plli(0, s));
while (!que.empty()){
plli p = que.top();que.pop();
int fr = p.second;
if (d[fr] < p.first) continue;
for (edge e: g[fr]){
int ti = d[fr];
int wait = 0;
if (ti <= c[fr]) wait = c[fr] - ti;
else {
ti -= c[fr];
ti %= (a[fr] + b[fr]);
if (ti < a[fr]) wait = 0;
else wait = b[fr] - (ti - a[fr]);
}
if (d[e.to] > d[fr] + wait + e.cost){
d[e.to] = d[fr] + wait + e.cost;
que.push(plli(d[e.to], e.to));
}
}
}
return d;
}
signed main(){
cin.tie(0);
ios::sync_with_stdio(false);
cin >> n >> m >> s >> tar;
s--; tar--;
rep(i, n) cin >> a[i] >> b[i] >> c[i];
rep(i, m) {
int x, y, t;
cin >> x >> y >> t;
x--; y--;
g[x].push_back(edge{y, t});
g[y].push_back(edge{x, t});
}
vector<ll> dist = dijkstra(s, n, g);
cout << dist[tar] << endl;
}
Submission Info
Submission Time |
|
Task |
I - 信号待ち |
User |
roto_37 |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2485 Byte |
Status |
AC |
Exec Time |
99 ms |
Memory |
10880 KB |
Judge Result
Set Name |
All |
Score / Max Score |
100 / 100 |
Status |
|
Set Name |
Test Cases |
All |
00-sample1, 00-sample2, 00-small0, 00-small1, 00-small10, 00-small11, 00-small12, 00-small13, 00-small14, 00-small15, 00-small16, 00-small17, 00-small18, 00-small19, 00-small2, 00-small3, 00-small4, 00-small5, 00-small6, 00-small7, 00-small8, 00-small9, 20-large0, 20-large1, 20-large10, 20-large11, 20-large12, 20-large13, 20-large14, 20-large15, 20-large16, 20-large17, 20-large18, 20-large19, 20-large2, 20-large3, 20-large4, 20-large5, 20-large6, 20-large7, 20-large8, 20-large9, 50-corner00, 50-corner01, 50-corner02 |
Case Name |
Status |
Exec Time |
Memory |
00-sample1 |
AC |
2 ms |
2560 KB |
00-sample2 |
AC |
2 ms |
2560 KB |
00-small0 |
AC |
3 ms |
2688 KB |
00-small1 |
AC |
3 ms |
2688 KB |
00-small10 |
AC |
7 ms |
3456 KB |
00-small11 |
AC |
5 ms |
3200 KB |
00-small12 |
AC |
7 ms |
3584 KB |
00-small13 |
AC |
7 ms |
3456 KB |
00-small14 |
AC |
5 ms |
3328 KB |
00-small15 |
AC |
5 ms |
3200 KB |
00-small16 |
AC |
5 ms |
3328 KB |
00-small17 |
AC |
5 ms |
3328 KB |
00-small18 |
AC |
4 ms |
2944 KB |
00-small19 |
AC |
6 ms |
3328 KB |
00-small2 |
AC |
3 ms |
2688 KB |
00-small3 |
AC |
3 ms |
2688 KB |
00-small4 |
AC |
3 ms |
2688 KB |
00-small5 |
AC |
3 ms |
2688 KB |
00-small6 |
AC |
3 ms |
2688 KB |
00-small7 |
AC |
3 ms |
2688 KB |
00-small8 |
AC |
3 ms |
2688 KB |
00-small9 |
AC |
3 ms |
2688 KB |
20-large0 |
AC |
94 ms |
10880 KB |
20-large1 |
AC |
94 ms |
10880 KB |
20-large10 |
AC |
90 ms |
10880 KB |
20-large11 |
AC |
96 ms |
10880 KB |
20-large12 |
AC |
93 ms |
10880 KB |
20-large13 |
AC |
94 ms |
10880 KB |
20-large14 |
AC |
97 ms |
10880 KB |
20-large15 |
AC |
90 ms |
10880 KB |
20-large16 |
AC |
89 ms |
10880 KB |
20-large17 |
AC |
99 ms |
10880 KB |
20-large18 |
AC |
98 ms |
10880 KB |
20-large19 |
AC |
94 ms |
10880 KB |
20-large2 |
AC |
94 ms |
10880 KB |
20-large3 |
AC |
95 ms |
10880 KB |
20-large4 |
AC |
95 ms |
10880 KB |
20-large5 |
AC |
90 ms |
10880 KB |
20-large6 |
AC |
88 ms |
10880 KB |
20-large7 |
AC |
89 ms |
10880 KB |
20-large8 |
AC |
91 ms |
10880 KB |
20-large9 |
AC |
94 ms |
10880 KB |
50-corner00 |
AC |
66 ms |
10368 KB |
50-corner01 |
AC |
61 ms |
10368 KB |
50-corner02 |
AC |
56 ms |
10368 KB |