P1144 最短路计数20pts,求助错哪了
  • 板块学术版
  • 楼主wangzelin
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/2/26 19:33
  • 上次更新2023/10/23 23:39:32
查看原帖
P1144 最短路计数20pts,求助错哪了
660107
wangzelin楼主2023/2/26 19:33
#include<bits/stdc++.h>
using namespace std;
const int mod=100003;
int n,m,dis[1000001],a[1000001];
bool vis[1000001];
vector <int> e[1000001];

void add(int x,int y)
{
    e[x].push_back(y);
    e[x].push_back(x);
}
void bfs()
{
    memset(dis,0x3f3f3f3f,sizeof dis);
    queue <int> que;
    a[1] =  vis[1] = 1;
    dis[1] = 0;
    que.push(1);
    while(!que.empty())
    {
        int x=que.front();que.pop();
        for(auto v:e[x])
        {
            if(!vis[v])
            {
                vis[v] = true;
                dis[v] = dis[x]+1;
                que.push(v);
            }
            if(dis[v]==dis[x]+1)
            {
                a[v] = (a[x]%mod+a[v]%mod)%mod;
            }
        }
    }
}

int main()
{
    cin>>n>>m;
    int x,y;
    for(int i=1;i<=m;i++)
    {
        scanf("%d %d",&x,&y);
        add(x,y);
    }
    bfs();
    for(int i=1;i<=n;i++) printf("%d\n",a[i]);
    return 0;
}
2023/2/26 19:33
加载中...