码迷,mamicode.com
首页 > 其他好文 > 详细

P1144 最短路计数

时间:2020-09-17 15:36:22      阅读:25      评论:0      收藏:0      [点我收藏+]

标签:bool   tor   end   oid   int   code   最短路径   for   ons   

  • 由于是无向无权图,采用BFS
  • 自环对于最短路无影响
  • 重边和其它边对最短路径数的影响是一样的,不用做特别处理
  • 采用dp思想即可统计出1号点到每个点的最短路径数
const int N=1e6+10;
vector<int> g[N];
int dist[N];
bool vis[N];
int cnt[N];
int n,m;

void bfs()
{
    queue<int> q;
    memset(dist,-1,sizeof dist);
    q.push(1);
    dist[1]=0;
    cnt[1]=1;

    while(q.size())
    {
        int t=q.front();
        q.pop();

        for(int i=0;i<g[t].size();i++)
        {
            int j=g[t][i];
            if(dist[j] == -1)
            {
                dist[j] = dist[t]+1;
                cnt[j]=cnt[t];
                q.push(j);
            }
            else if(dist[j] == dist[t]+1)
            {
                cnt[j]=(cnt[j]+cnt[t])%mod;
            }
        }
    }
}

int main()
{
    ios;
    cin>>n>>m;

    while(m--)
    {
        int a,b;
        cin>>a>>b;
        g[a].push_back(b);
        g[b].push_back(a);
    }

    bfs();

    for(int i=1;i<=n;i++)
        if(dist[i] == -1) cout<<0<<endl;
        else cout<<cnt[i]<<endl;

    //system("pause");
}

P1144 最短路计数

标签:bool   tor   end   oid   int   code   最短路径   for   ons   

原文地址:https://www.cnblogs.com/fxh0707/p/13619178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!