This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "game.h"
#include<bits/stdc++.h>
#define ll int
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
ll N,i,j,b[1551][1551],be[1551],tt,a[1551],hv;
void initialize(int n) {
N=n;
for(i=0;i<N;i++)
{
a[i]=N-1;
for(j=0;j<N;j++)
b[i][j]=1;
}
}
void rmt(ll aa)
{
be[aa]=tt;
ll ii;
for(ii=0;ii<N;ii++)
if(b[min(ii,aa)][max(ii,aa)]==1&&be[ii]!=tt)
rmt(ii);
}
int hasEdge(int u, int v) {
tt++;
if(u>v)
swap(u,v);
b[u][v]=0;
a[u]--;
a[v]--;
// memset(be,0,sizeof(be));
// rmt(u);
if(a[u]==0||a[v]==0)
{
// b[u][v]=1;
return 1;
}
if(a[u]==1)
{
for(i=0;i<N;i++)
{
if(b[min(i,u)][max(i,u)]==1&&i!=u)
{
hv=i;
}
}
// cout<<hv<<"hv\n";
// cout<<min(hv,v)<<"-"<<max(hv,v)<<"\n";
// cout<<b[1][3]<<"b13\n";
if(b[min(hv,v)][max(hv,v)]==0)
return 1;
}
if(a[v]==1)
{
for(i=0;i<N;i++)
{
if(b[min(i,v)][max(i,v)]==1&&i!=v)
hv=i;
}
// cout<<hv<<"hv\n";
if(b[min(hv,u)][max(hv,u)]==0)
return 1;
}
// if(a[u]>1&&a[v]>1)
return 0;
// else
// return 1;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |