Submission #6861421
Source Code Expand
#include <bits/stdc++.h>
#define rep(i, n) for (ll i = 0; i < (n); i++)
#define rep2(i, a, b) for (ll i = (a); i < (b); i++)
typedef uint64_t ull;
typedef int64_t ll;
typedef std::pair<ll, ll> PLL;
using namespace std;
vector<bool> reacheable_s;
vector<bool> reacheable_e;
vector<bool> r;
void dfs(ll s, const vector<vector<ll>> &edges, vector<bool> &reacheable) {
reacheable[s] = true;
for (auto nxt: edges[s]) {
if (!reacheable[nxt]) {
dfs(nxt, edges, reacheable);
}
}
}
class BellmanFord {
const ll INF = 1e18;
struct edge { ll from, to, cost; };
public:
BellmanFord(ll n): n(n) {}
void AddEdge(ll from, ll to, ll cost) {
es.push_back(edge{from, to, cost});
}
vector<ll> ShortestPath(ll start) {
vector<ll> d(n, INF);
d[start] = 0;
for (ll i=0; i<n; i++) {
for (auto e: es) {
if (d[e.from] != INF && d[e.to] > d[e.from] + e.cost) {
d[e.to] = d[e.from] + e.cost;
// printf("i=%d e.to = %d\n",i,e.to);
if (i == n-1 && r[e.to])
return vector<ll>();
}
}
}
return d;
}
private:
ll n;
vector<edge> es;
};
signed main() {
ll N,M,P;
cin>>N>>M>>P;
BellmanFord bf(N);
reacheable_s.resize(N, false);
reacheable_e.resize(N, false);
r.resize(N, false);
vector<vector<ll>> edges_s(N);
vector<vector<ll>> edges_e(N);
rep(i,M){
ll from, to, cost;
cin >> from >> to >> cost;
from--;
to--;
cost = -(cost -P);
bf.AddEdge(from, to, cost);
edges_s[from].push_back(to);
edges_e[to].push_back(from);
}
// 0とN-1から到達可能な点rを求める
dfs(0, edges_s, reacheable_s);
dfs(N-1, edges_e, reacheable_e);
rep(i,N){
r[i] = reacheable_s[i] & reacheable_e[i];
// printf("r[%d]=%x\n",i,r[i]);
}
auto d = bf.ShortestPath(0);
if (d.size() == 0) {
cout << -1 << endl;
return 0;
}
cout << max((ll)0, -d[N-1])<< endl;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Coins Respawn |
| User | bobuhiro11 |
| Language | C++14 (GCC 5.4.1) |
| Score | 500 |
| Code Size | 2029 Byte |
| Status | AC |
| Exec Time | 47 ms |
| Memory | 768 KiB |
Judge Result
| Set Name | Sample | All | after_contest | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | 0 / 0 | ||||||
| Status |
|
|
|
| Set Name | Test Cases |
|---|---|
| Sample | a01, a02, a03 |
| All | a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49, b50, b51, b52, b53, b54, b55, b56 |
| after_contest | after_contest_57, after_contest_58, after_contest_59 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| a01 | AC | 1 ms | 256 KiB |
| a02 | AC | 1 ms | 256 KiB |
| a03 | AC | 1 ms | 256 KiB |
| after_contest_57 | AC | 13 ms | 768 KiB |
| after_contest_58 | AC | 13 ms | 768 KiB |
| after_contest_59 | AC | 13 ms | 768 KiB |
| b04 | AC | 1 ms | 256 KiB |
| b05 | AC | 1 ms | 256 KiB |
| b06 | AC | 1 ms | 256 KiB |
| b07 | AC | 1 ms | 256 KiB |
| b08 | AC | 1 ms | 256 KiB |
| b09 | AC | 13 ms | 768 KiB |
| b10 | AC | 13 ms | 768 KiB |
| b11 | AC | 13 ms | 768 KiB |
| b12 | AC | 10 ms | 768 KiB |
| b13 | AC | 10 ms | 768 KiB |
| b14 | AC | 13 ms | 768 KiB |
| b15 | AC | 4 ms | 512 KiB |
| b16 | AC | 4 ms | 640 KiB |
| b17 | AC | 4 ms | 640 KiB |
| b18 | AC | 13 ms | 768 KiB |
| b19 | AC | 13 ms | 768 KiB |
| b20 | AC | 13 ms | 768 KiB |
| b21 | AC | 13 ms | 768 KiB |
| b22 | AC | 9 ms | 640 KiB |
| b23 | AC | 13 ms | 768 KiB |
| b24 | AC | 9 ms | 768 KiB |
| b25 | AC | 1 ms | 384 KiB |
| b26 | AC | 21 ms | 768 KiB |
| b27 | AC | 21 ms | 768 KiB |
| b28 | AC | 21 ms | 768 KiB |
| b29 | AC | 22 ms | 768 KiB |
| b30 | AC | 22 ms | 768 KiB |
| b31 | AC | 21 ms | 768 KiB |
| b32 | AC | 22 ms | 768 KiB |
| b33 | AC | 22 ms | 768 KiB |
| b34 | AC | 23 ms | 768 KiB |
| b35 | AC | 23 ms | 768 KiB |
| b36 | AC | 24 ms | 768 KiB |
| b37 | AC | 25 ms | 768 KiB |
| b38 | AC | 21 ms | 768 KiB |
| b39 | AC | 21 ms | 768 KiB |
| b40 | AC | 21 ms | 768 KiB |
| b41 | AC | 21 ms | 768 KiB |
| b42 | AC | 21 ms | 768 KiB |
| b43 | AC | 44 ms | 768 KiB |
| b44 | AC | 44 ms | 768 KiB |
| b45 | AC | 47 ms | 768 KiB |
| b46 | AC | 45 ms | 768 KiB |
| b47 | AC | 16 ms | 768 KiB |
| b48 | AC | 11 ms | 512 KiB |
| b49 | AC | 13 ms | 768 KiB |
| b50 | AC | 14 ms | 768 KiB |
| b51 | AC | 13 ms | 768 KiB |
| b52 | AC | 14 ms | 768 KiB |
| b53 | AC | 13 ms | 768 KiB |
| b54 | AC | 20 ms | 640 KiB |
| b55 | AC | 26 ms | 768 KiB |
| b56 | AC | 32 ms | 768 KiB |