Submission #3609409
Source Code Expand
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>
#include <stack>
#include <queue>
#include <set>
#include <cstring>
using namespace std;
// ascending order
#define vsort(v) sort(v.begin(), v.end())
// descending order
#define vsort_r(v) sort(v.begin(), v.end(), greater<int>())
#define vunique(v) unique(v.begin(), v.end())
#define mp make_pair
#define ts(x) to_string(x)
#define rep(i, a, b) for(int i = (int)a; i < (int)b; i++)
#define repm(i, a, b) for(int i = (int)a; i > (int)b; i--)
#define bit(a) bitset<8>(a)
#define des_priority_queue priority_queue<int, vector<int>, greater<int> >
typedef long long ll;
typedef pair<int, int> P;
const int INF = 1e9;
const ll MAX_V = 2 * 1e3 + 1;
const ll MAX_E = 4 * 1e3 + 2 * 1e5;
struct edge {
ll from, to, cost;
};
ll d[MAX_V];
ll V, E;
edge es[MAX_E];
void shortest_path(int s) {
rep(i, 0, V) d[i] = INF;
d[s] = 0;
while(true) {
bool update = false;
rep(i, 0, E) {
edge e = es[i];
if(d[e.from] != INF && d[e.to] > d[e.from] + e.cost) {
d[e.to] = d[e.from] + e.cost;
update = true;
}
}
if(!update) break;
}
}
bool find_negative_loop(int s) {
//memset(d, 0, sizeof(d));
fill(d, d + V, INF);
d[s] = 0;
rep(i, 0, V) {
rep(j, 0, E) {
edge e = es[j];
if(d[e.from] != INF && d[e.to] > d[e.from] + e.cost) {
d[e.to] = d[e.from] + e.cost;
if(i == V - 1) return true;
}
}
}
return false;
}
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
ll N, M;
cin >> N >> M;
ll p[N], q[N], x[M], y[M], a[M], b[M];
rep(i, 0, N) cin >> p[i];
rep(i, 0, N) cin >> q[i];
rep(i, 0, M) cin >> x[i] >> y[i] >> a[i] >> b[i];
V = 0; E = 0;
rep(i, 0, N) {
es[E].from = 2 * N;
es[E].to = i;
es[E].cost = p[i];
E++;
es[E].from = i;
es[E].to = 2 * N;
es[E].cost = 0;
E++;
}
rep(i, 0, N) {
es[E].from = 2 * N;
es[E].to = N + i;
es[E].cost = 0;
E++;
es[E].from = N + i;
es[E].to = 2 * N;
es[E].cost = q[i];
E++;
}
rep(i, 0, M) {
es[E].from = N + y[i] - 1;
es[E].to = x[i] - 1;
es[E].cost = b[i];
E++;
es[E].from = x[i] - 1;
es[E].to = N + y[i] - 1;
es[E].cost = -a[i];
E++;
}
V = 2 * N + 1;
if(find_negative_loop(0)) {
cout << "no" << endl;
return 0;
}
cout << "yes" << endl;
}
Submission Info
Submission Time |
|
Task |
H - Asteroids2 |
User |
tsutarou10 |
Language |
C++14 (GCC 5.4.1) |
Score |
200 |
Code Size |
2457 Byte |
Status |
AC |
Exec Time |
1719 ms |
Memory |
8192 KB |
Judge Result
Set Name |
All |
Score / Max Score |
200 / 200 |
Status |
|
Set Name |
Test Cases |
All |
00-sample-00, 00-sample-01, 10-small_yes-00, 10-small_yes-01, 10-small_yes-02, 10-small_yes-03, 10-small_yes-04, 10-small_yes-05, 10-small_yes-06, 10-small_yes-07, 10-small_yes-08, 20-small_disturb-00, 20-small_disturb-01, 20-small_disturb-02, 20-small_disturb-03, 20-small_disturb-04, 20-small_disturb-05, 20-small_disturb-06, 20-small_disturb-07, 20-small_disturb-08, 30-large_yes-00, 30-large_yes-01, 30-large_yes-02, 30-large_yes-03, 30-large_yes-04, 40-large_disturb-00, 40-large_disturb-01, 40-large_disturb-02, 40-large_disturb-03, 40-large_disturb-04, 40-large_disturb-05, 40-large_disturb-06, 40-large_disturb-07, 40-large_disturb-08, 40-large_disturb-09, 40-large_disturb-10, 40-large_disturb-11, 40-large_disturb-12, 40-large_disturb-13, 40-large_disturb-14, 40-large_disturb-15 |
Case Name |
Status |
Exec Time |
Memory |
00-sample-00 |
AC |
1 ms |
256 KB |
00-sample-01 |
AC |
1 ms |
256 KB |
10-small_yes-00 |
AC |
1 ms |
256 KB |
10-small_yes-01 |
AC |
1 ms |
256 KB |
10-small_yes-02 |
AC |
1 ms |
256 KB |
10-small_yes-03 |
AC |
1 ms |
256 KB |
10-small_yes-04 |
AC |
1 ms |
256 KB |
10-small_yes-05 |
AC |
1 ms |
256 KB |
10-small_yes-06 |
AC |
9 ms |
1024 KB |
10-small_yes-07 |
AC |
9 ms |
1024 KB |
10-small_yes-08 |
AC |
9 ms |
1024 KB |
20-small_disturb-00 |
AC |
1 ms |
256 KB |
20-small_disturb-01 |
AC |
1 ms |
256 KB |
20-small_disturb-02 |
AC |
1 ms |
256 KB |
20-small_disturb-03 |
AC |
2 ms |
256 KB |
20-small_disturb-04 |
AC |
2 ms |
256 KB |
20-small_disturb-05 |
AC |
2 ms |
256 KB |
20-small_disturb-06 |
AC |
20 ms |
1024 KB |
20-small_disturb-07 |
AC |
21 ms |
1024 KB |
20-small_disturb-08 |
AC |
20 ms |
1024 KB |
30-large_yes-00 |
AC |
574 ms |
8192 KB |
30-large_yes-01 |
AC |
574 ms |
8192 KB |
30-large_yes-02 |
AC |
574 ms |
8192 KB |
30-large_yes-03 |
AC |
574 ms |
8192 KB |
30-large_yes-04 |
AC |
573 ms |
8192 KB |
40-large_disturb-00 |
AC |
1712 ms |
8192 KB |
40-large_disturb-01 |
AC |
1708 ms |
8192 KB |
40-large_disturb-02 |
AC |
1711 ms |
8192 KB |
40-large_disturb-03 |
AC |
1712 ms |
8192 KB |
40-large_disturb-04 |
AC |
1702 ms |
8192 KB |
40-large_disturb-05 |
AC |
1709 ms |
8192 KB |
40-large_disturb-06 |
AC |
1712 ms |
8192 KB |
40-large_disturb-07 |
AC |
1719 ms |
8192 KB |
40-large_disturb-08 |
AC |
1708 ms |
8192 KB |
40-large_disturb-09 |
AC |
1708 ms |
8192 KB |
40-large_disturb-10 |
AC |
1705 ms |
8192 KB |
40-large_disturb-11 |
AC |
1709 ms |
8192 KB |
40-large_disturb-12 |
AC |
1714 ms |
8192 KB |
40-large_disturb-13 |
AC |
1706 ms |
8192 KB |
40-large_disturb-14 |
AC |
1701 ms |
8192 KB |
40-large_disturb-15 |
AC |
1717 ms |
8192 KB |