信息学奥赛一本通第三部分_队列 ex2_3produce 产生数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信息学奥赛一本通第三部分_队列 ex2_3produce 产生数相关的知识,希望对你有一定的参考价值。

  给出一个整数n(n<=2000)(代码可适用n<=10^31)和k个变换规则(k<=15)。

  规则:1、1个数字可以变换成另1个数字;

     2、规则中右边的数字不能为零。

  

  BFS

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

 

以上是关于信息学奥赛一本通第三部分_队列 ex2_3produce 产生数的主要内容,如果未能解决你的问题,请参考以下文章

信息学奥赛一本通要多少钱

信息学奥赛一本通为啥不通过

长春市哪里有卖这本信息学奥赛一本通c++的书店?

LibreOJ刷题计划 &《信息学奥赛一本通》提高版题目

信息学奥赛一本通 1.2 二分与三分

信息奥赛一本通 1060:均值