原題:判斷2棵樹是否為同構樹。
題解:直接對每個節點記錄一下它的雜湊值。這個雜湊值體現了以這個節點為根的子樹的形態。比較下每個相對位置的雜湊值是否相同。
#include
#include
#include
#include
#include
#include
#define n 100010
#define q 8388608
#define zz 2333223
#define zz1 2323233
#define mo 1000000007
#define inf 2147483647
#define ll long long
#define p(a) putchar(a)
#define fo(i,a,b) for(i=a;i<=b;i++)
using
namespace
std;
struct note;note edge[n*2],edge1[n*2];
struct note2;note2 a[n],b[n];
struct note3;note3 c[n],c1[n];
int i,j,k,l,n,n1,m,last;
int cn0,cn1;
int head[n],head1[n],head4[n];
int tot,tot1,r,r1;
int u,v;
int siz[n],siz1[n],mx[n],mx1[n],hv,hv1,hv2,hv3;
int fa[n],fa1[n],p[n];
int st[n];
int qu[n][2],h,t;
ll ha[q],rd,rd1;
ll tt[n],tt1[n];
bool ia,bz[n];
int read()
void write(int x)
void lb(int x,int y)
void lb1(int x,int y)
int hash(ll x)
void findhv(int x)
for(i=head4[x];i;i=edge[i].next)
if(fa[x]!=edge[i].to)
if(!p)
}st[0]--;}}
}void findhv1(int x)
for(i=head4[x];i;i=edge1[i].next)
if(fa1[x]!=edge1[i].to)
if(!p)
}st[0]--;}}
}void dg(int x)
p=0;
for(i=head4[x];i;i=edge[i].next)
if(fa[x]!=edge[i].to)
if(!p)st[0]--;
}}void dg1(int x)
p=0;
for(i=head4[x];i;i=edge1[i].next)
if(fa1[x]!=edge1[i].to)
if(!p)st[0]--;
}}void working(int x)
void working1(int x)
void working2(int x)
}void working3(int x1)
}void working4(int x)
if(!tt[0]) else
}void working5(int x)
if(!tt[0]) else
}void dg2(int x)
if(!p)
}}void dg3(int x)
if(!p)
}}bool cmpx(note3 x,note3 y)
int main()
fo(i,1,n-1)
mx[0]=mx1[0]=inf;
findhv(1);findhv1(1);
if(hv2 && !hv3 || hv3 && !hv2)
n1=n;
if(hv2) else r=hv,r1=hv1;
memset(fa,0,sizeof(fa));
memset(fa1,0,sizeof(fa1));
memset(siz,0,sizeof(siz));
memset(siz1,0,sizeof(siz1));
dg(r);dg1(r1);dg2(r);dg3(r1);
ia=0;
qu[1][0]=r;qu[1][1]=r1;
h=0,t=1;
int x,x1;
while(h0],x1=qu[h][1];
if(a[x].hh!=b[x1].hh || a[x].hhh!=b[x1].hhh)
p[x]=x1;
cn0=cn1=0;
working2(x);
working3(x1);
if(cn0!=cn1)
sort(c+1,c+cn0+1,cmpx);
sort(c1+1,c1+cn1+1,cmpx);
fo(i,1,cn0)
}if(ia)
printf("yes\n");
fo(i,1,n1)write(p[i]),p(' ');
return
0;}
做個強大的人
人生不易且行且珍惜。最近有點小感想,沒事寫篇文章嘮叨一下吧。人生的過法多樣,說兩種比較典型的吧。認知有限,只是自己的感想。如果不喜歡就當看個樂子吧。1.死守自己的認知不思進取,不求上進,一味地沉迷於休閒娛樂之中,過著一眼就可以望到頭的生活。2.在恪守本分的情況下,盡量增加和擴寬自己的認知。以使自己完...
呼叫一款強大的人工智慧平台
php 圖靈機械人 需要匯入的包 commons logging 1.0.4.jar httpclient 4.3.1.jar httpcore 4.3.jar apikey apiurl openapi api?key key info info 設定報文頭,構建請求報文 header conte...
做個內心強大的人
今天和老大爭吵乙個小小的功能,他覺得他那樣比較合理,我覺得我這樣更有意義。每每當老大說這個功能要修改那個功能要新增,都很頭痛,這意味你可能需要花很大精力去實現這個小小功能,可能需要重新寫很多很多 然後,我總是會問為什麼要這樣做,這樣做有什麼意義?然後在討論中漸漸理解,在討論中漸漸完善,哪怕花費很大的...