有大佬能讲一下我37行写continue与break的区别吗
continue过了break WA了一半记忆化没过关
下面是代码
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+1;
int trie[N*31][2],enter[N],last[N],head[N],ww[N],idx,id;
int n,s[N];
void insert(int x){
int p=0;
for(int i=30;i>=0;i--){
bool u=x>>i&1;
if(!trie[p][u]) trie[p][u]=++id;
p=trie[p][u];
}
}
int query(int x){
int p=0,res=0;
for(int i=30;i>=0;i--){
int u=x>>i&1;
if(trie[p][!u]){
p=trie[p][!u];
res+=1<<i;
}else p=trie[p][u];
}
return res;
}
void add(int a,int b,int w){
enter[idx]=b;last[idx]=head[a];ww[idx]=w;head[a]=idx++;
}
void dfs(int x,int come){
if(x==1){
s[x]=ww[head[x]];
return;
}
for(int i=head[x];i!=0;i=last[i]){
if(enter[i]==come) continue;
if(s[enter[i]]){
s[x]=(s[enter[i]]^ww[i]);
continue;//-------------------37----------------------
}else{
dfs(enter[i],x);
s[x]=(s[enter[i]]^ww[i]);
}
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);add(v,u,w);//new
}
for(int i=1;i<=n;i++){
dfs(i,-1);
}
for(int i=1;i<=n;i++){
insert(s[i]);
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,query(s[i]));
}
cout<<ans<<endl;
return 0;
}
感谢解答