zoukankan      html  css  js  c++  java
  • SPFA模板,链式前向星

    模板

     1 #include <cstdio>
     2 #include <queue>
     3 #include <cstring>
     4 #include <algorithm>
     5 
     6 using namespace std;
     7 
     8 int n, p, c, ans, cnt;
     9 long long m;
    10 struct node
    11 {
    12     int to, next;
    13 }edge[5000001];
    14 int dis[5000001], head[500001], x, y;
    15 bool vis[5000001];
    16 
    17 void spfa()
    18 {
    19     int i, j;
    20     queue <int> q;
    21     memset(dis, 0x7f, sizeof(dis));
    22     dis[c] = 1;
    23     vis[c] = 1;
    24     q.push(c);
    25     while(!q.empty())
    26     {
    27         i = q.front();
    28         q.pop();
    29         vis[i] = 0;
    30         for(j = head[i]; j >= 0; j = edge[j].next)
    31          if(dis[edge[j].to] > dis[i] + 1)
    32          {
    33              dis[edge[j].to] = dis[i] + 1;
    34              if(!vis[edge[j].to])
    35              {
    36                  q.push(edge[j].to);
    37                  vis[edge[j].to] = 1;
    38              }
    39          }
    40     }
    41 }
    42 
    43 int main()
    44 {
    45     int i, j;
    46     scanf("%d %d %d", &n, &p, &c);
    47     scanf("%d", &m);
    48     memset(head, -1, sizeof(head));
    49     for(i = 1; i <= p; i++)
    50     {
    51         scanf("%d %d", &x, &y);
    52         edge[cnt].to = y;
    53         edge[cnt].next = head[x];
    54         head[x] = cnt++;
    55         edge[cnt].to = x;
    56         edge[cnt].next = head[y];
    57         head[y] = cnt++;
    58     }
    59     spfa();
    60     for(i = 1; i <= n; i++) ans = max(ans, dis[i]);
    61     printf("%lld", ans + m);
    62     return 0;
    63 }
    链式前向星

    完事

  • 相关阅读:
    arclinux安装报错unknown trust
    linux微型主机服务器配置
    spring data jpa + hibernate
    又纠结activiti
    comet4j
    shiro纠结之旅
    ubuntu更改jdk版本的问题
    struts上传
    java实现四则运算
    6 个重构方法可帮你提升 80% 的代码质量(转)
  • 原文地址:https://www.cnblogs.com/2464638814-xch/p/6868625.html
Copyright © 2011-2022 走看看