产生数

 1 #include <bits/stdc++.h>
 2 #define maxn 1000
 3 char num[33];
 4 int len,q[maxn],Visited[11];
 5 long long ans = 1;
 6 int main ()
 7 {
 8     int i,j,k;
 9     int K,x[16],y[16];
10     scanf ("%s%d",num,&K);
11     for (i = 1;i<=K;i++)
12         scanf ("%d%d",x+i,y+i);
13     len = strlen (num);
14     int head = 0,tail = 0,temp;
15     for (j = 0;j<len;j++)
16     {
17         temp = 1;
18         memset (Visited,0,sizeof(Visited));
19         q[++tail] = num[j]-'0';
20         do{
21             head++;
22             for (i = 1;i<=K;i++)
23             {
24                 if (q[head] == x[i] && Visited[y[i]] == 0)
25                 {
26                     q[++tail] = y[i];
27                     temp++;
28                     Visited[x[i]] = 1;
29                     Visited[y[i]] = 1;
30                 }
31 
32             }
33         }while (head<tail);
34         ans*=temp;
35     }
36     printf ("%lld",ans);
37     return 0;
38 }

 

posted @ 2022-01-27 16:11  jetaim  阅读(35)  评论(0)    收藏  举报