zoukankan      html  css  js  c++  java
  • poj3159 Candies SPFA

    题目链接:http://poj.org/problem?id=3159

    题目很容易理解

    就是简单的SPFA算法应用

    刚开始用STL里的队列超时了,自己写了个栈,果断过,看来有时候栈还是快啊。。。。

    代码:

     1 #include<iostream>
     2 #include<cstdlib>
     3 #include<cstdio>
     4 #include<cstring>
     5 #define INF 0x3f3f3f3f
     6 #define maxn 30010
     7 #define max_e 150010
     8 using namespace std;
     9 class node
    10 {
    11    public:
    12    int to;
    13    int w;
    14    int next;
    15 };
    16 node edge[max_e];
    17 int head[maxn];
    18 int inq[maxn];
    19 int dis[maxn];
    20 int tol;
    21 int n,m;
    22 int Q[maxn];
    23 void add(int u,int v,int w)
    24 {
    25      edge[tol].to=v;
    26      edge[tol].w=w;
    27      edge[tol].next=head[u];
    28      head[u]=tol++;
    29 };
    30 void SPFA() 
    31 {
    32      int top=0;
    33     for(int i=1;i<=n;i++)
    34     {
    35         dis[i]=INF;
    36         inq[i]=0;
    37     }
    38     dis[1]=0;
    39     inq[1]++;
    40     Q[++top]=1;
    41     while(top!=0)
    42     {
    43        int u=Q[top];
    44        top--;
    45        inq[u]--;
    46        int tmp=head[u];
    47        while(tmp!=-1)
    48        {
    49           int v=edge[tmp].to;
    50           int w=edge[tmp].w;
    51           if(dis[v]>dis[u]+w)
    52           {
    53               dis[v]=dis[u]+w;
    54               if(inq[v]==0) 
    55                  {
    56                        Q[++top]=v;
    57                        inq[v]++;
    58                  }
    59           }
    60            tmp=edge[tmp].next;
    61        }
    62 
    63     }
    64 }
    65 int main()
    66 {
    67     int a,b,c;
    68   while(scanf("%d%d",&n,&m)!=EOF)
    69   {
    70        tol=0;
    71        memset(head,-1,sizeof(head));
    72       for(int i=1;i<=m;i++)
    73       {
    74         scanf("%d%d%d",&a,&b,&c);
    75         add(a,b,c);
    76       }
    77       SPFA();
    78       cout<<dis[n]<<endl;
    79   }
    80   return 0;
    81 }
  • 相关阅读:
    Spring cloud学习总结
    Spring boot学习笔记
    Rabbitmq安装步骤
    Mongodb 笔记采坑
    Rabbit Docker 部署及采坑
    各种知识汇总
    Echart 随便写的
    Linux常用命令
    Redis学习笔记
    Docker使用总结
  • 原文地址:https://www.cnblogs.com/xiaozhuyang/p/poj3159.html
Copyright © 2011-2022 走看看