有几个点死活不过,求有么有大佬帮忙看下
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
struct node{
int n1,n2,n3,n4;
};
queue<node> q;
int n,k,gz[3000],x,y,w,t[5],ans;;
bool num[10][10][10][10];
int main(){
memset(gz,-1,sizeof(gz));
cin>>n>>k;
for(int i=1;i<=k;i++){
cin>>x>>y;
gz[x]=y;
}
for(int i=n;i;i/=10) w++;
for(int i=n,j=w;i;i/=10) t[j--]=i%10;
node p;
p.n1=t[1]; p.n2=t[2]; p.n3=t[3]; p.n4=t[4];
q.push(p);
while(!q.empty()){
node xx;
xx=q.front();
q.pop();
if(num[xx.n1][xx.n2][xx.n3][xx.n4]) continue;
num[xx.n1][xx.n2][xx.n3][xx.n4]=1;
ans++;
//cout<<xx.n1<<xx.n2<<xx.n3<<xx.n4<<endl;
if(gz[xx.n1]!=-1){
node l;
l.n1=gz[xx.n1];
l.n2=xx.n2;
l.n3=xx.n3;
l.n4=xx.n4;
q.push(l);
}
if(gz[xx.n2]!=-1){
node l;
l.n1=xx.n1;
l.n2=gz[xx.n2];
l.n3=xx.n3;
l.n4=xx.n4;
q.push(l);
}
if(gz[xx.n3]!=-1){
node l;
l.n1=xx.n1;
l.n2=xx.n2;
l.n3=gz[xx.n3];
l.n4=xx.n4;
q.push(l);
}
if(gz[xx.n4]!=-1){
node l;
l.n1=xx.n1;
l.n2=xx.n2;
l.n3=xx.n3;
l.n4=gz[xx.n4];
q.push(l);
}
}
cout<<ans;
return 0;
}