应该是最后一个点太大然后爆long long了,有什么办法
#include<bits/stdc++.h>
using namespace std;
string s;
int k;
vector<int> a[100];
long long c[100];
long long sum=1;
bool b,bb;
int main(){
cin>>s;
cin>>k;
for(int i=1;i<=k;i++)
{
int x,y;
cin>>x>>y;
b=false;
if(x!=y)
{
if(a[x].size()==0)
{
c[x]=1;
a[x].push_back(y);
for(int p=0;p<a[y].size();p++)
{
for(int o=0;o<a[x].size();o++)
{
if(a[y][p]==a[x][o])
{
bb=true;
break;
}
}
if(bb==false)
{
a[x].push_back(a[y][p]);
c[x]++;
}
bb=false;
}
continue;
}
for(int j=0;j<a[x].size();j++)
{
if(y==a[x][j])
{
b=true;
break;
}
}
if(b==false)
{
a[x].push_back(y);
c[x]++;
}
for(int p=0;p<a[y].size();p++)
{
for(int o=0;o<a[x].size();o++)
{
if(a[y][p]==a[x][o]||a[y][p]==x)
{
bb=true;
break;
}
}
if(bb==false)
{
a[x].push_back(a[y][p]);
c[x]++;
}
bb=false;
}
}
}
for(int i=0;i<=9;i++)
{
if(a[i].size()==0)
{
continue;
}
for(int j=0;j<a[i].size();j++)
{
for(int p=0;p<a[a[i][j]].size();p++)
{
for(int o=0;o<a[i].size();o++)
{
if(a[a[i][j]][p]==a[i][o]||a[a[i][j]][p]==i)
{
bb=true;
break;
}
}
if(bb==false)
{
// cout<<"jj"<<endl;
a[i].push_back(a[a[i][j]][p]);
c[i]++;
}
bb=false;
}
}
}
// for(int i=0;i<=9;i++)
// {
// if(a[i].size()==0)
// {
// cout<<"fuck";
// }
// for(int j=0;j<a[i].size();j++)
// {
// cout<<a[i][j]<<" ";
// }
// cout<<endl;
// }
for(int i=0;i<s.size();i++)
{
if(c[s[i]-'0']==0)
{
continue;
}
if(i==s.size()-1)
{
for(int j=0;j<=a[s[i]-'0'].size();j++)
{
if(a[s[i]-'0'][j]=='0')
{
c[s[i]-'0']--;
}
}
if(c[s[i]-'0']==0) break;
}
for(int o=0;o<a[s[i]-'0'].size();o++)
{
if(a[s[i]-'0'][o]==s[i]-'0'&&a[s[i]-'0'][o]!=-1)
{
a[s[i]-'0'][o]=-1;
c[s[i]-'0']--;
break;
}
}
sum*=(c[s[i]-'0']+1);
}
cout<<sum;
}