在线IDE总提示错误:对‘hash’的引用有歧义
是怎么回事?
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<cstdlib>
#include<iomanip>
#include<algorithm>
#define N 10000+5
using namespace std;
int hash[N],sum,sum_[3],go[N];
bool vis[N][N],n,m;
inline int read(){
int w=1,s=0;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') w=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
s+=(s<<3)+(s<<1)+(c^48),
c=getchar();
}
return s*w;
}
void print(){
for(int i=1;i<=m+1;++i) printf("%d ",go[i]);
}
void dfs(int p,int dep){
if(hash[p]==0) return;
if(hash[p]==1&&dep==m) {
print();
exit(0);
}
--hash[p];
for(int i=1;i<=n;++i){
if(vis[p][i]){
vis[p][i]=vis[i][p]=0;
--hash[p];
dfs(i,dep+1);
vis[p][i]=vis[i][p]=1;
++hash[p];
}
}
}
int main(){
n=read(),m=read();
for(int i=1;i<=m;++i) {
int x=read(),y=read();
vis[y][x]=vis[x][y]=1;
++hash[x];
++hash[y];
for(int i=1;i<=n;++i){
if(hash[i]&1==1){
sum_[++sum]=i;
}
}
if(sum==0) --hash[1],go[1]=1,dfs(1);
if(sum==2) --hash[sum[1]],go[1]=sum[1],dfs(sum_[1]);
return 0;
}