제출 #912760

#제출 시각아이디문제언어결과실행 시간메모리
912760amirhoseinfar1385길고양이 (JOI20_stray)C++17
15 / 100
48 ms17300 KiB
#include "Anthony.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn=20000+10;
struct yal{
	int u,v,w;	
	int getad(int fu){
		return (fu^u^v);
	}
}alle[maxn];

namespace {
	int a,b,n,m,high[maxn];
}

vector<int>res;
vector<int>adj[maxn];

void bfs(int u){
	vector<int>bf;
	bf.push_back(u);
	int dis=1;
	while((int)bf.size()>0){
		for(auto x:bf){
			high[x]=dis;
		}
		vector<int>fake;
		for(auto x:bf){
			for(auto y:adj[x]){
				int v=alle[y].getad(x);
				if(high[v]==0){
					high[v]=dis+1;
					fake.push_back(v);
				}
			}
		}
		swap(fake,bf);
		dis++;
	}
}

vector<int> Mark(int N, int M, int A, int B,std::vector<int> U, std::vector<int> V) {
  	a=A;
  	b=B;
  	n=N;
  	m=M;
  	res.resize(m);
  	for(int i=0;i<m;i++){
 		alle[i].u=U[i];
 		alle[i].v=V[i]; 		
  		adj[alle[i].u].push_back(i);
  		adj[alle[i].v].push_back(i);
  	}
  	if(a>=3){
  		bfs(0);
  		for(int i=0;i<m;i++){
  			if(high[alle[i].u]==high[alle[i].v]){
  				res[i]=(high[alle[i].v]+1)%3;
  				continue;
  			}
  			if(high[alle[i].u]>high[alle[i].v]){
  				swap(alle[i].u,alle[i].v);
  			}
  			res[i]=high[alle[i].v]%3;
  		}
  		return res;
  	}
  	bfs(0);
  	for(int i=0;i<m;i++){
  		if(high[alle[i].u]>high[alle[i].v]){
  			swap(alle[i].u,alle[i].v);
  		}
  		res[i]=high[alle[i].v]%2;
  	}
  	return res;
}
#include "Catherine.h"
#include<bits/stdc++.h>
using namespace std;

namespace {
  int a,b,peydashod=0,last=-1;
  vector<int>tofy;
}

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

int Move(std::vector<int> y) {
  if(a>=3){
    vector<int>tof;
    for(int i=0;i<(int)y.size();i++){
      if(y[i]!=0){
        tof.push_back(i);
      }
    }
    if((int)tof.size()==0){
      return -1;
    }
    if((int)tof.size()==1){
      return tof[0];
    }
    if(tof[0]==0&&tof[1]==1){
      return 0;
    }
    if(tof[0]==0&&tof[1]==2){
      return 2;
    }
    if(tof[0]==1&&tof[1]==2){
      return 1;
    }
  }
  if(y[0]>1){
    last=1;
    peydashod=1;
    return 1;
  }
  if(y[1]>1){
    last=0;
    peydashod=1;
    return 0;
  }
  if(peydashod==1){
    last^=1;
    return last;
  }
  if(last==-1){
    if(y[0]==0&&y[1]==0){
      peydashod=1;
      return -1;
    }
    last^=1;
    tofy.push_back(last);
    int z=-1;
    if(z==-1){
      return last;
    }
    if(z==0){
      last^=1;
      peydashod=1;
      return -1;
    }
    peydashod=1;
    return last;
  }
  else{
    y[last]++;
    if(y[0]>1){
      last=1;
      peydashod=1;
     return 1;
    } 
    if(y[1]>1){
      last=0;
      peydashod=1;
      return 0;
    }
    return last;
  }
}
#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...