社区讨论

80分代码求调

P1037[NOIP 2002 普及组] 产生数参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mlkioxkv
此快照首次捕获于
2026/02/13 14:39
6 天前
此快照最后确认于
2026/02/16 12:55
3 天前
查看原帖
样例都对,主要思路就是bfs
CPP
#include<iostream>
#include<queue>
#include<string>
using namespace std;
int g[10][10];
bool vis[10];
queue<int> q;
int bfs(char op){
    for(int i=0;i<10;i++)
        vis[i]=0;
    
    while(q.size()){
        q.pop();
    }
    long long res=1;
    int now=op-'0';
    q.push(now);
    vis[now]=1;
    while(q.size()){
        int x=q.front();
        q.pop();
        for(int i=0;i<=9;i++){
            if(g[x][i]==1&&!vis[i]){
                q.push(i);
                vis[i]=1;
                res++;
            }
        }
    }
    return res;
}
int main(){
    string st;
    int k;
    cin>>st>>k;
    for(int i=1;i<=k;i++){
        int a,b;
        cin>>a>>b;
        g[a][b]=1;
    }
    long long ans=1;
    for(int i=0;i<st.size();i++){
        ans*=bfs(st[i]);
    }
    cout<<ans;
    return 0;
}
第五个测试点没过

回复

2 条回复,欢迎继续交流。

正在加载回复...