码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-02-17 17:26:22      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

  给出一个整数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 产生数

标签:

原文地址:http://www.cnblogs.com/Aeolus/p/5195931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!