#include<bits/stdc++.h>
#include <vector>
#define endl '\n'
using namespace std;
const int mod = 1e4+7;
bool inst[10];
vector<vector<int> > d(10);
vector<int> num(10);
int dfs(int n) {
if(inst[n]) return 0;
inst[n] = 1;
if(d[n].size() == 0) return 1;
int cnt = 0;
for(int i:d[n]) {
cnt += dfs(i);
}
cnt++;
return cnt;
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n,x;
cin >> x >> n;
int a,b;
for(int i = 1;i<=n;i++) {
cin >> a >> b;
d[a].emplace_back(b);
}
for(int i = 0;i<=9;i++) {
num[i] = dfs(i);
//cout << num[i] << ' ';
for(int i = 1;i<=9;i++) {
inst[i] = 0;
}
}
//cout << endl;
int ans = 1;
while(x > 0) {
int a = x%10;
ans = ans*num[a]%mod;
x /= 10;
}
cout << ans << endl;
}
跑一次dfs

京公网安备 11010502036488号