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 "grader.h"
#include "encoder.h"
//for 50point orz;
void encode_number(int x)
{
for(int i=0;i<10;i++)encode_bit((x&(1<<i))!=0);
}
int d[1010],q[1010];
int st[1010],en[2000020],next[2000020];
bool check[1010];
void addedge(int s,int d,int c){next[c]=st[s],st[s]=c,en[c]=d;}
void bfs(int x)
{
int *f,*r;
f=r=q;
*f++=x;
check[x]=1;
while(f!=r){
int t=*r++;
for(int i=st[t];i!=-1;i=next[i]){
if(!check[en[i]])*f++=en[i],check[en[i]]=true,d[en[i]]=d[t]+1;
}
}
}
void encode(int nv, int nh, int ne, int *v1, int *v2){
int i,j;
for(i=0;i<nv;i++)st[i]=-1;
for(i=0;i<ne;i++)addedge(v1[i],v2[i],i<<1),addedge(v2[i],v1[i],i<<1|1);
for(i=0;i<nh;i++){
bfs(i);
for(j=0;j<nv;j++)encode_number(d[j]);
for(j=0;j<nv;j++)check[j]=d[j]=0;
}
return;
}
#include "grader.h"
#include "decoder.h"
//for 50point orz;
void decode(int nv, int nh){
int i,j,k;
for(i=0;i<nh;i++)
for(j=0;j<nv;j++){
int c=0;
for(k=0;k<10;k++)c+=(1<<k)*decode_bit();
hops(i,j,c);
}
}
Compilation message (stderr)
encoder.cpp: In function 'void encode(int, int, int, int*, int*)':
encoder.cpp:37:33: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
for(j=0;j<nv;j++)check[j]=d[j]=0;
~~~~^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |