42 lines
627 B
C++
42 lines
627 B
C++
#include<cstdio>
|
|
#define MAXN 10001
|
|
#define MAXM 16
|
|
int n,k;
|
|
int exist[MAXN];
|
|
int que[MAXN];
|
|
int a[MAXM],b[MAXM];
|
|
int main(void)
|
|
{
|
|
scanf("%d",&n);
|
|
scanf("%d",&k);
|
|
for (int i=0;i<k;i++)
|
|
scanf("%d%d",&a[i],&b[i]);
|
|
exist[n]=1;
|
|
que[1]=n;
|
|
int head=1;
|
|
for (int tail=0;head>=tail;)
|
|
{
|
|
int x=que[++tail];
|
|
int y=x,mod=1;
|
|
while (x>0)
|
|
{
|
|
int tmp=x%10;
|
|
x/=10;
|
|
for (int i=0;i<k;i++)
|
|
if (a[i]==tmp)
|
|
{
|
|
int p=y+(b[i]-tmp)*mod;
|
|
if (exist[p]==0)
|
|
{
|
|
exist[p]=1;
|
|
que[++head]=p;
|
|
}
|
|
}
|
|
mod*=10;
|
|
}
|
|
}
|
|
printf("%d\n",head);
|
|
return 0;
|
|
}
|
|
|
|
|