求助,本地过了样例错了
查看原帖
求助,本地过了样例错了
885505
Joushi_Ikita楼主2023/10/11 21:49

代码如下

#include<iostream>
using namespace std;
__int128 n,k,a[13][13],b[13],ans=1;
void dfs(int x,int y){
    for(int i=0;i<=9;i++){
        if(a[y][i]&&!a[x][i]){
            a[x][i]=1;
            dfs(x,i);
        }
    }
}
void write(__int128 x){
    if(x==0)return;
    write(x/10);
    cout<<(int)(x%10);
}
__int128 read(){
    char s;
    __int128 x=0;
    while(scanf("%c",&s)){
        if(s==' '||s=='\n')return x;
        x*=(__int128)10;
        x+=__int128(s-'0');
        //write(x);
        //cout<<endl;
    }
    return x;
}
int main(){
    n=read();
    k=read();
    //write(k);
    //cout<<endl;
    for(int i=1;i<=k;i++){
        int x,y;
        cin>>x>>y;
        a[x][y]=1;
        //cout<<(int)a[x][y]<<' ';
    }
    for(int i=0;i<=9;i++){
        a[i][i]=1;
    }
    for(int i=0;i<=9;i++){
        for(int j=0;j<=9;j++){
            if(a[i][j]){
                dfs(i,j);
            }
        }
        for(int j=0;j<=9;j++){
            if(a[i][j]){
                b[i]++;
            }
        }
    }
    /*for(int i=0;i<=9;i++){
        for(int j=0;j<=9;j++){
            cout<<i<<' '<<j<<' '<<(int)a[i][j];
            cout<<"    ";
        }
        cout<<endl;
    }*/
    do{
        ans*=b[n%10];
        n/=10;
    }while(n);
    write(ans);
    cout<<endl;
    return 0;
}
2023/10/11 21:49
加载中...