Submission #1132778

#TimeUsernameProblemLanguageResultExecution timeMemory
1132778OI_AccountStray Cat (JOI20_stray)C++20
15 / 100
37 ms13896 KiB
#include "Anthony.h"
#include <bits/stdc++.h>
using namespace std;
namespace {

const int N = 20'000;

int n, m, a, b, h[N + 10], mark[N + 10];
vector<pair<int, int>> adj[N + 10];
vector<int> vec = {0, 0, 1, 1, 0, 1};

void readInput(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) {
	n = N;
	m = M;
	a = A;
	b = B;
	for (int i = 1; i <= m; i++) {
		int u = U[i - 1] + 1, v = V[i - 1] + 1;
		adj[u].push_back({v, i});
		adj[v].push_back({u, i});
	}
}

void BFS() {
	queue<int> qu;
	qu.push(1);
	mark[1] = true;
	while (!qu.empty()) {
		int u = qu.front();
		qu.pop();
		for (auto [v, id]: adj[u])
			if (!mark[v]) {
				h[v] = h[u] + 1;
				mark[v] = true;
				qu.push(v);
			}
	}
}

void solve() {
	BFS();
}

} std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) {
	readInput(N, M, A, B, U, V);
	//cout << "alo " << endl;
	solve();
	vector<int> x;
	for (int i = 1; i <= m; i++) {
		int u = U[i - 1] + 1, v = V[i - 1] + 1;
		x.push_back((h[u] != h[v]? max(h[u], h[v]) % 3: (h[u] + 1) % 3));
	}
	return x;
}
#include "Catherine.h"
#include <bits/stdc++.h>
using namespace std;
namespace {

const int T = 6;
const int A = 2;

deque<int> dq[10];

int a, b;
int check, cntCheck, goBack;
int solveit, cnt[10], deg[10], last, adj;
deque<int> vecCheck;

void calcDQ() {
	vector<int> st = {0, 0, 1, 1, 0, 1};
	for (int i = 0; i < T; i++)
		dq[0].push_back(st[i]);
	for (int i = 1; i < T; i++) {
		dq[i] = dq[i - 1];
		dq[i].push_back(dq[i].front());
		dq[i].pop_front();
	}
}

void init() {
	calcDQ();
	last = -1;
}


void initDeg(vector<int> x) {
	adj = (last != -1);
	for (int i = 0; i < a; i++) {
		deg[i] = x[i];
		cnt[i] = x[i];
		adj += x[i];
	}
	if (last != -1)
		cnt[last]++;
}

int checkSolveit() {
	if (adj == 2) {
		for (int i = 0; i < a; i++)
			if (deg[i] == 1)
				return i;
		cout << 100 / 0 << endl;
	}
	if (last != -1 && cnt[last] == 1)
		return -1;
	for (int i = 0; i < a; i++)
		if (cnt[i] == 1)
			return i;
	cout << 100 / 0 << endl;
}

bool goodPath() {
	for (int i = 0; i < T; i++)
		if (vecCheck == dq[i])
			return true;
	return false;
}

int checkMove() {
	if (adj != 2)
		solveit = true;
	if (solveit)
		return checkSolveit();
	if (last == -1) {
		cntCheck = T;
		goBack = -1;
	}
	if (cntCheck) {
		int one = (deg[0]? 0: 1);
		vecCheck.push_back(one);
		cntCheck--;
		return one;
	}
	else if (goBack == -1) {
		if (!goodPath()) {
			//cout << "yes" << endl;
			solveit = true;
			return checkSolveit();
		}
		else {
			solveit = true;
			return -1;
		}
	}
	if (goBack) {
		goBack--;
		return -1;
	}
	solveit = true;
	return checkSolveit();
}

} void Init(int A, int B) {
	a = A;
	b = B;
	init();
}

int Move(std::vector<int> y) {
	//return 0;
	initDeg(y);
	int res;
	vector<int> vec;
	for (int i = 0; i < a; i++)
		if (cnt[i])
			vec.push_back(i);
	if (vec.size() == 1)
		res = vec[0];
	else if ((vec[0] + 1) % 3 == vec[1])
		res = vec[0];
	else
		res = vec[1];
	last = (res == -1? last: res);
	//cout << res << endl;
	return res;
}

Compilation message (stderr)

# 2번째 컴파일 단계

Catherine.cpp: In function 'int {anonymous}::checkSolveit()':
Catherine.cpp:49:29: warning: division by zero [-Wdiv-by-zero]
   49 |                 cout << 100 / 0 << endl;
      |                         ~~~~^~~
Catherine.cpp:56:21: warning: division by zero [-Wdiv-by-zero]
   56 |         cout << 100 / 0 << endl;
      |                 ~~~~^~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...