Submission #218101

#TimeUsernameProblemLanguageResultExecution timeMemory
218101_7_7_길고양이 (JOI20_stray)C++14
20 / 100
79 ms20404 KiB
#include "Anthony.h"
#include <bits/stdc++.h>                                           
 
//#define int long long
//#pragma GCC optimize("Ofast")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4")
 
 
#define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout);
#define all(x) x.begin(), x.end()
#define sz(s) (int)s.size()
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define s second
#define f first
 
 
using namespace std;
 
 
typedef pair < long long, long long > pll;    
typedef pair < int, int > pii;
typedef unsigned long long ull;         
typedef vector < pii > vpii;
typedef vector < int > vi;
typedef long double ldb;  
typedef long long ll;  
typedef double db;                             
 
 
const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, block = 333;
const pii base = mp(1171, 3307), Mod = mp(1e9 + 7, 1e9 + 9);
const int inf = 1e9, maxn = 4e5 + 148, mod = 1e9 + 7, N = 2e4 + 11;
const db eps = 1e-12, pi = 3.14159265359;
const ll INF = 1e18;

vi g[N], res;
queue < int > q;
int n, p[N], d[N];
unordered_map < int, int > gg[N];


vi Mark(int _n, int m, int A, int B, vi U, vi V) {
	n = _n;
	res.resize(m);

	for (int i = 0; i < m; ++i) {
		g[V[i]].pb(U[i]); 
		g[U[i]].pb(V[i]);
		gg[V[i]][U[i]] = gg[U[i]][V[i]] = i;
	}
	
	memset(d, -1, sizeof(d));
	memset(p, -1, sizeof(p));

	q.push(0);
	d[0] = 0;

	while (sz(q)) {
		int v = q.front();
		q.pop();
		for (auto to : g[v])
			if (to != p[v]) {
				if (d[to] == -1) {
					d[to] = d[v] + 1;
					p[to] = v;
					q.push(to);
					res[gg[v][to]] =  d[v] % A;
				} else { 
//					assert(abs(d[to] - d[v]) == 1);
					if (d[to] <= d[v])
						res[gg[v][to]] = d[to] % A; 
				}
			}
	}



	return res;
}
#include "Catherine.h"
#include <bits/stdc++.h>                                           
 
//#define int long long
//#pragma GCC optimize("Ofast")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4")
 
 
#define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout);
#define all(x) x.begin(), x.end()
#define sz(s) (int)s.size()
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define s second
#define f first
 
 
using namespace std;
 
 
typedef pair < long long, long long > pll;    
typedef pair < int, int > pii;
typedef unsigned long long ull;         
typedef vector < pii > vpii;
typedef vector < int > vi;
typedef long double ldb;  
typedef long long ll;  
typedef double db;                             
 
 
const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, block = 333;
const pii base = mp(1171, 3307), Mod = mp(1e9 + 7, 1e9 + 9);
const int inf = 1e9, maxn = 4e5 + 148, mod = 1e9 + 7, N = 3e5 + 11;
const db eps = 1e-12, pi = 3.14159265359;
const ll INF = 1e18;

int A, B;
bool ok;

void Init(int _A, int _B) {
	A = _A;
	B = _B;                       	
}

int Move(vi y) {
	int a = -1, b = -1;
	ok ^= 1;
	for (int i = 0; i < sz(y); ++i)
		if (y[i]) {
			if (a == -1)
				a = i;
			else if (b == -1)
				b = i;
			else 
				assert(0);			
		}

	if (b == -1 && a == -1) {
		ok ^= 1;
		return a;
	}

	if (b == -1) 
		return a;  	
	
	


	if (A > 2) {
		if (b == A - 1 && a == 0)
			return b;
		return a;
	}

	if (y[a] > 1)
		return b;

	if (y[b] > 1)	
		return a;
	if (ok)
		return a;
	return b;
}
#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...