样例过了,自造数据也过了,下载数据之后不懂为什么。
#include<bits/stdc++.h>
#define int ll
using namespace std;
typedef long long ll;
struct node{
queue<int>q;
}a[10];
int vis[10];
int dp[10];
int n,k,x,y,s;
ll ans=1;
void dfs(int num){
if(vis[num]==1){
s--;
return;
}
vis[num]=1;
queue<int>w;
while(!a[num].q.empty()){
s++;
// printf("%d ",a[num].q.front());
dfs(a[num].q.front());
w.push(a[num].q.front());
a[num].q.pop();
}
a[num].q=w;
vis[num]=0;
}
signed main(){
scanf("%d %d",&n,&k);
for(int i=1;i<=k;i++)scanf("%d %d",&x,&y),a[x].q.push(y);
for(int i=0;i<10;i++){
memset(vis,0,sizeof(vis));
s=1;
dfs(i);
dp[i]=s;
// printf("%d:%d\n",i,s);
}
while(n){
ans*=(dp[n%10]);
n/=10;
}
cout<<ans;
return 0;
}
/*
12 3
1 2
2 3
2 7
*/