Submission #1357265

#TimeUsernameProblemLanguageResultExecution timeMemory
1357265Jawad_Akbar_JJCop and Robber (BOI14_coprobber)C++20
16 / 100
17 ms1872 KiB
#include "coprobber.h"
#include <vector>
#include <algorithm>

using namespace std;
vector<int> nei[555];
int st[555], en[555], cur, E, tr;

void dfs(int u){
	st[u] = ++cur;
	for (int i : nei[u]){
		nei[i].erase(find(begin(nei[i]), end(nei[i]), u));
		dfs(i);
	}
	en[u] = ++cur;
}

int start(int n, bool A[MAX_N][MAX_N]){
	for (int i=0;i<n;i++){
		for (int j=0;j<n;j++){
			if (A[i][j])
				nei[i].push_back(j), E++;
		}
	}
	if (E == n + n - 2)
		dfs(0), tr = 1;
	return 0;
}

int I, J;
int nextMove(int R){
	J = R;

	if (tr == 1){
		for (int i : nei[I]){
			if (st[i] <= st[J] and en[J] <= en[i])
				I = i;
		}
		return I;
	}
	return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...