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

产生数(Produce)

时间:2017-12-10 21:37:51      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:set   输入   include   col   nbsp   std   str   space   post   

产生数(Produce)

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1361
时间限制: 1000 ms         内存限制: 65536 KB
 

【题目描述】

给出一个整数n(n<=2000)和k个变换规则(k≤15)。规则:

① 1个数字可以变换成另1个数字;

② 规则中,右边的数字不能为零。

例如:n=234,k=2规则为

2 → 5

3 → 6

上面的整数234经过变换后可能产生出的整数为(包括原数)234,534,264,564共4种不同的产生数。

求经过任意次的变换(0次或多次),能产生出多少个不同的整数。仅要求输出不同整数个数。

【输入】

n

k

x1 y1

x2 y2

… …

xn yn

【输出】

格式为一个整数(满足条件的整数个数)。

【输入样例】

234
2
2 5
3 6

【输出样例】

4
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
int a[25];
bool b[12];
queue <int>Q;
vector<int>G[15];
int bfs(int x)
{    
    int t=1;    
    Q.push(x);
    b[x]=1;
    while(!Q.empty())
    {
        int u=Q.front();
        Q.pop();
        for(int i=0;i<G[u].size();i++)
        {
            int v=G[u][i];
            if(!b[v])
            {
                t++;Q.push(v);b[v]=1;
            }
        }
    }
    return t;
}
int main()
{
    string s;
    int ans=1,k;
    cin>>s>>k;
    for(int i=1;i<=k;i++)
    {
        int u,v;
        cin>>u>>v;
        G[u].push_back(v);
    }
    for(int i=0;i<s.size();i++)
        {
            memset(b,0,sizeof(b));
            ans*=bfs(s[i]-0);
        }
    cout<<ans<<endl;    
}

 

产生数(Produce)

标签:set   输入   include   col   nbsp   std   str   space   post   

原文地址:http://www.cnblogs.com/EdSheeran/p/8017885.html

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