摘要:trie树代码:#include<iostream>#include<fstream>using namespace std;int n;struct e{ int state[26]; int cnt;};e tree[20004];char c[1004][24];int state;void insert(int s){ int i,j=0; for(i=0;i<strlen(c[s]);i++) { if(tree[j].state[c[s][i]-'a']==0) { tree[j].state[c[s][i]-'a']=
阅读全文
摘要:hash判断子树是否相同,并且自身的终结性要相同。代码:#include<iostream>#include<fstream>using namespace std;#define prim 99983struct { int end; int p[30];}tree[150001];int n,m;char c[30];int state;void build(char c[]){ int i,j,k; i=1; for(j=0;j<strlen(c);j++) { k=c[j]-'a'; if(tree[i].p[k]==0) tree[i].
阅读全文
摘要:trie+并查集,并查集判断联通情况。代码:#include<iostream>#include<fstream>using namespace std;int n;int f[500001];int rank[500001];int d[500001];void init(){ for(int i=1;i<=500000;i++) { f[i]=i; rank[i]=0; }}int father(int s){ if(s!=f[s]) s=father(f[s]); return f[s];}void unionset(int s,int t){ int i=
阅读全文