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
AC × 41
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