Submission #53436

#TimeUsernameProblemLanguageResultExecution timeMemory
53436ainta장난감 기차 (IOI17_train)C++17
0 / 100
2072 ms1424 KiB
#include "train.h"
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;

int n, m, D[5010], TD[5010], U[5010], chk[5010];
vector<int>E[5010];

vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) {
	n = a.size();
	m = u.size();
	int i, j;
	for (i = 0; i < m; i++) {
		E[u[i]].push_back(v[i]);
	}
	for (i = 0; i < n; i++) {
		if (r[i] == 1)TD[i] = 1;
		else TD[i] = 0;
		D[i] = -1;
	}
	for (i = 0; i < 15000; i++) {
		for (j = 0; j < n; j++) {
			if (D[j] != TD[j]) chk[j] = 1, D[j]=TD[j];
			else chk[j] = 0;
			if (a[j])TD[j] = 0;
			else TD[j] = 1e9;
		}
		for (j = 0; j < n; j++) {
			if (chk[j]) {
				for (auto &t : E[j]) {
					if (a[t] == 1) {
						TD[t] = max(TD[t], r[t] + D[j]);
					}
					else {
						TD[t] = min(TD[t], r[t] + D[j]);
					}
				}
			}
		}
		if (i == 9999)for (j = 0; j < n; j++)U[j] = TD[j];
	}
	vector<int>res(n);
	for (j = 0; j < n; j++) {
		if (D[j] != U[j])res[j] = 1;
		else res[j] = 0;
	}
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...