最后一个样例莫名 WA 了,求助
查看原帖
最后一个样例莫名 WA 了,求助
377947
小小师妹楼主2021/10/12 22:32

是不是unsigned long long还不够输出结果?那该怎么办,求助!

#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
using namespace std;
int k;
unsigned long long ans=1;
string n;
int num[35];
unsigned long long sum[35];
vector<int> map[10];
bool vis[10];
unsigned long long dfs(int x)
{
    unsigned long long cnt=1;
    for(int i=0;i<map[x].size();i++)
    {
        if(!vis[map[x][i]])
        {
            vis[map[x][i]]=1;
            cnt=cnt+dfs(map[x][i]);
            vis[map[x][i]]=0;
        }
    }
    return cnt;
}
int main()
{
    cin>>n>>k;
    for(int i=0;i<n.size();i++) num[i+1]=n[i]-'0';
    for(int i=1;i<=k;i++)
    {
        int x,y;
        scanf("%d %d",&x,&y);
        map[x].push_back(y);
    }
    for(int i=1;i<=n.size();i++)
    {
        if(sum[num[i]]) ans*=sum[num[i]];
        else
        {
            vis[num[i]]=1;
            unsigned long long tmp=dfs(num[i]);
            ans*=tmp;
            sum[num[i]]=tmp;
            vis[num[i]]=0;
        }
    }
    cout<<ans<<endl;
    return 0;
}
2021/10/12 22:32
加载中...