博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj4337 BJOI2015 树的同构
阅读量:5272 次
发布时间:2019-06-14

本文共 2908 字,大约阅读时间需要 9 分钟。

一晚上写了一道傻逼题,这不是日常吗。

de到死亡,怀疑人生,然后重构

//Achen#include
#include
#include
#include
#include
#include
#include
#include
#include
const int N=55;const int mod=1e9+7;const int base=131;typedef long long LL;using namespace std;int n,m,top;LL hs[N][N],has[N],tp[N],que[N];template
void read(T &x) { T f=1; x=0; char ch=getchar(); while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if(ch=='-') f=-1,ch=getchar(); for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;}int ecnt,fir[N],nxt[N<<1],to[N<<1];void add(int u,int v) { nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v; nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u;}void dfs(int x,int fa) { for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) dfs(to[i],x); tp[x]=0; top=0; for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) que[++top]=tp[to[i]]; if(!top) {tp[x]=233; return;} sort(que+1,que+top+1); for(int i=1;i<=top;i++) tp[x]=(tp[x]^que[i])*base%mod;}int main() { read(m); for(int i=1;i<=m;i++) { read(n); memset(fir,0,sizeof(fir)); ecnt=0; for(int j=1;j<=n;j++) { int fa; read(fa); if(fa) add(fa,j); } for(int j=1;j<=n;j++) { dfs(j,0); hs[i][j]=tp[j]; } sort(hs[i]+1,hs[i]+n+1); for(int j=1;j<=n;j++) has[i]=(has[i]^hs[i][j])*233%mod; for(int j=1;j<=i;j++) if(has[i]==has[j]) { printf("%d\n",j); break; } } return 0;}
View Code

 

至今不懂注释为何WA

//Achen#include
#include
#include
#include
#include
#include
#include
#include
#include
const int N=55;typedef long long LL;using namespace std;int n,m;LL hs[N][N],has[N],base,mod,node[N],tp[N]; template
void read(T &x) { T f=1; x=0; char ch=getchar(); while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if(ch=='-') f=-1,ch=getchar(); for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;}int ecnt,fir[N],nxt[N<<1],to[N<<1]; void add(int u,int v) { nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v; nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u;}int que[N],top; void dfs(int x,int fa) { for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) dfs(to[i],x); tp[x]=0; top=0; for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) que[++top]=tp[to[i]]; if(!top) {tp[x]=233; return;} sort(que+1,que+top+1); for(int i=1;i<=top;i++) tp[x]=(tp[x]^que[i])*base%mod;}int main() { read(m); base=131; mod=1e9+7; for(int i=1;i<=m;i++) { read(n); memset(fir,0,sizeof(fir)); ecnt=0; for(int j=1;j<=n;j++) { int fa; read(fa); if(fa) add(fa,j); } for(int j=1;j<=n;j++) { dfs(j,0); hs[i][j]=tp[j]; } sort(hs[i]+1,hs[i]+n+1); for(int j=1;j<=n;j++) has[i]=(has[i]^hs[i][j])*233%mod; for(int j=1;j<=i;j++) if(has[i]==has[j]) { printf("%d\n",j); break; } } /*for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(has[i]==has[j]) { printf("%d\n",j); break; }*/ return 0;}
View Code

 

转载于:https://www.cnblogs.com/Achenchen/p/8280630.html

你可能感兴趣的文章
Html.Partial和Html. RenderPartial用法
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
Ubuntu server 16.04的安装 以及配置(服务器版)
查看>>
Jtest 对象库的使用(Object Repository)
查看>>
phpstudy的mysql版本升级至5.7
查看>>
ubuntu server设置时区和更新时间
查看>>
《弟子规》下的沉思
查看>>
B. Beautiful Paintings
查看>>
AtCoder Beginner Contest 103
查看>>
Codeforces 589F Gourmet and Banquet
查看>>
随机字符串。
查看>>
Create参数为:nil/self/application的区别
查看>>
网络流24题 飞行员配对方案问题
查看>>
STM32空闲中断
查看>>
Python 直接赋值、浅拷贝和深度拷贝解析
查看>>
剑指offer python版 调整数组顺序使奇数位于偶数前面
查看>>
内容提供者编写步骤
查看>>
汇编指令
查看>>
Leader of All Crushing Machines in the Future
查看>>