请在25个汉字内描述清楚帖子主题
查看原帖
请在25个汉字内描述清楚帖子主题
1433189
UPDATE_KR楼主2025/1/24 13:58
#include<iostream>
#include<limits>
#include<queue>
#include<vector>
#include<array>
constexpr int N=100003;
std::array<int,2000001>c,d;
int n,m,a,b,answer=0;std::array<std::vector<int>,2000001>mp;
void f(){
    d.fill(0x3f3f3f3f);
    std::queue<int>q;
    q.push(1);
    d.at(1)=0;
    c.at(1)=1;
    while(q.size()){
        for(int i{0};i<mp.at(q.front()).size();++i){
            int v=mp.at(q.front()).at(i);
            if(d.at(v)>d.at(q.front())+1){
                q.push(v),d.at(v)=d.at(q.front())+1;
                c.at(v)=c.at(q.front());
            }
            else if(d.at(v)==d.at(q.front())+1){
                c.at(v)=(c.at(v)%N+c.at(q.front())%N)%N;
            }
        }
        q.pop();
    }
}
int main(){
    std::cin>>n>>m;
    for(int i{1};i<=m;++i){
        std::cin>>a>>b;
        mp.at(a).push_back(b),mp.at(b).push_back(a);
    }
    f();
for(int i{1};i<=n;++i)
    std::cout<<c.at(i)<<'\n';
    return 0;
}
2025/1/24 13:58
加载中...