#include "Anthony.h"
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define pb push_back
#define sz(x) (int)(x.size())
#define chmin(x,y) x=min(x,y)
#define chmax(x,y) x=max(x,y)
#define vi vector<int>
#define vp vector<pii>
#define vvi vector<vi>
#define ykh mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count())
#define __lg(x) 63-__builtin_clzll(x)
#define pow2(x) (1LL<<x)
void __print(int x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifdef local
void setio(){freopen("/Users/iantsai/Library/Mobile Documents/com~apple~CloudDocs/cpp/Empty.md","r",stdin);}
#define debug(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
void setio(){}
#define debug(x...)
#endif
void setIO(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
const int mxn=2e4+5;
vector<int>x(mxn);
vector<pii>adj[mxn];
long long dis[mxn];
int a,n,m,b;
void bfs(){
queue<int>q;
memset(dis,0x3f3f3f3f,sizeof(dis));
q.push(0);
dis[0]=0;
while(sz(q)){
auto v=q.front();
q.pop();
for(auto [u,id]:adj[v]){
if(dis[u]>dis[v]+1){
dis[u]=dis[v]+1;
q.push(u);
}
}
}
}
int col[]={0,1,0,0,1,1};
void dfs(int v,int pa,int p){
for(auto [u,id]:adj[v]){
if(u==pa)continue;
x[id]=col[p];
if(sz(adj[u])<3){
dfs(u,v,(p+1)%6)
}
else{
dfs(u,v,!x[id]);
}
}
}
vector<int> Mark(int N, int M, int A, int B,std::vector<int> U, std::vector<int> V) {
a=A,n=N,m=M,b=B;
vector<int> X(M);
for(int i=0;i<M;i++){
adj[U[i]].pb({V[i],i});
adj[V[i]].pb({U[i],i});
}
if(A>=3){
bfs();
for(int i=0;i<M;i++){
X[i]=min(dis[V[i]],dis[U[i]])%A;
}
}
else{
dfs(0,0,0);
for(int i=0;i<M;i++){
X[i]=x[i];
}
}
return X;
}
#include "Catherine.h"
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define pb push_back
#define sz(x) (int)(x.size())
#define chmin(x,y) x=min(x,y)
#define chmax(x,y) x=max(x,y)
#define vi vector<int>
#define vp vector<pii>
#define vvi vector<vi>
#define ykh mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count())
#define __lg(x) 63-__builtin_clzll(x)
#define pow2(x) (1LL<<x)
void __print(int x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifdef local
void setio(){freopen("/Users/iantsai/Library/Mobile Documents/com~apple~CloudDocs/cpp/Empty.md","r",stdin);}
#define debug(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
void setio(){}
#define debug(x...)
#endif
void setIO(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
namespace {
int a,b;
} // namespace
void Init(int A, int B) {
a=A,b=B;
}
bool f,found;
int last,step,fs;
int c=0;
int Move(std::vector<int> y) {
if(a>=3){
for(int i=0;i<a;i++){
if(y[i] and y[(i+1)%a]){
return i;
}
}
for(int i=0;i<a;i++){
if(y[i])return i;
}
}
else{
int cnt=0;
for(auto u:y)cnt+=u;
if(cnt+f>=3){
if(!f){
f=1;
if(y[0]<y[1]){
last=0;
return 0;
}
else{
last=1;
return 1;
}
}
else{
if(y[last]==0){
return -1;
}
else{
if(y[0]<y[1]){
last=0;
return 0;
}
else{
last=1;
return 1;
}
}
}
}
else if(cnt+f==1){
found=true;
if(!f){
f=1;
if(y[0]<y[1]){
last=0;
}
else{
last=1;
}
return last;
}
else{
return -1;
}
}
else{
if(found){
if(y[1]==1){
last=1;
return 1;
}
else{
last=0;
return 0;
}
}
if(step==0){
if(y[0]==2){
c=1;
last=0;
return 0;
}
else if(y[1]==2){
c=2;
last=1;
return 1;
}
else{
c=3;
last=0;
return 0;
}
}
else if(step==1){
if(c==1){
last=1;
return 1;
}
else if(c==2){
last=0;
return 0;
}
else{
if(y[0]){
last=0;
fs=0;
return 0;
}
else if(y[1]){
last=1;
fs=1;
return 1;
}
}
}
else if(step==2){
if(c==1 or c==2){
found=true;
if(y[0]){
last=0;
return 0;
}
else{
return -1;
}
}
else{
if(fs==0){
last=1;
return 1;
}
else{
//101
found=1;
if(y[0]){
last=0;
return 0;
}
else{
return -1;
}
}
}
}
else{
found=1;
if(y[0]){
last=0;
return 0;
}
else{
return -1;
}
}
}
}
}
Compilation message
Anthony.cpp: In function 'void bfs()':
Anthony.cpp:58:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
58 | for(auto [u,id]:adj[v]){
| ^
Anthony.cpp: In function 'void dfs(int, int, int)':
Anthony.cpp:68:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
68 | for(auto [u,id]:adj[v]){
| ^
Anthony.cpp:72:29: error: expected ';' before '}' token
72 | dfs(u,v,(p+1)%6)
| ^
| ;
73 | }
| ~
Anthony.cpp: In function 'void setIO(std::string)':
Anthony.cpp:42:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
42 | freopen((s + ".in").c_str(), "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anthony.cpp:43:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
43 | freopen((s + ".out").c_str(), "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Catherine.cpp: In function 'void setIO(std::string)':
Catherine.cpp:42:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
42 | freopen((s + ".in").c_str(), "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Catherine.cpp:43:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
43 | freopen((s + ".out").c_str(), "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:204:1: warning: control reaches end of non-void function [-Wreturn-type]
204 | }
| ^