Submission #835748

#TimeUsernameProblemLanguageResultExecution timeMemory
835748JosiaToy Train (IOI17_train)C++17
0 / 100
2065 ms1616 KiB
#include "train.h"
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> graph;
vector<bool> own;
vector<bool> station;


vector<int> dp;
vector<bool> vis;
int dfs(int v) {
	if (station[v]) return 1;

	if (dp[v]!=-1) return dp[v];

	if (vis[v]) return 0;
	vis[v] = 1;

	set<int> poss;

	for (int i: graph[v]) {
		poss.insert(dfs(i));
	}

	if (own[v]) {
		if (poss.count(1)) return 1;
		return 0;
	}
	if (!own[v]) {
		if (poss.count(0)) return 0;
		return 1;
	}
}




vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) {
	int n = a.size();
	graph.assign(n, vector<int>());

	for (int i = 0; i<(int)u.size(); i++) {
		graph[u[i]].push_back(v[i]);
	}

	own.resize(n);
	station.resize(n);

	for (int i = 0; i<n; i++) {
		own[i] = a[i];
		station[i] = r[i];
	}


	vector<int> res(n);
	for (int i = 0; i<n; i++) {
		vis.assign(n, 0);
		dp.assign(n, -1);
		res[i] = dfs(i);
	}
	return res;
}

Compilation message (stderr)

train.cpp: In function 'int dfs(int)':
train.cpp:21:11: warning: control reaches end of non-void function [-Wreturn-type]
   21 |  set<int> poss;
      |           ^~~~
#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...