zoukankan      html  css  js  c++  java
  • poj 3159

    差分约束

    我也忘了谁说的了,反正我记得有人说过,只要是差分约束问题都可以转换成图

    至少目前看来都是这样的

    我一开始spfa+queue超时

    看别人博客才知道要用spfa+stack,感觉智商又下降了一点

    #include <iostream>
    #include <cstdio>
    #include <queue>
    #include <cstring>
    #include <vector>
    #include <algorithm>
    using namespace std;
    const int maxn = 30005;
    int head[maxn];
    int nex[150005];
    int cnt;
    int dis[maxn];
    bool vis[maxn];
    struct node
    {
        int v;
        int w;
    };
    node mp[150005];
    int n,m;
    void adde(int a,int b,int c)
    {
        mp[cnt].v = b;
        mp[cnt].w = c;
        nex[cnt] = head[a];
        head[a] = cnt++;
    }
    long long spfa()
    {
        memset(dis,0x3f,sizeof(dis));
        memset(vis,0,sizeof(vis));
        int stac[maxn];
        int top = 0;
        stac[top++] = 1;
        dis[1] = 0;
        vis[1] =true;
        while(top)
        {
            int u = stac[--top];
            vis[u] = false;
            for(int i = head[u]; i != -1; i = nex[i])
            {
                //cout << u << " " << mp[i].v  << " " << mp[i].w << endl;
                if(dis[mp[i].v] > dis[u] + mp[i].w)
                {
                    dis[mp[i].v] = dis[u] + mp[i].w;
                    //cout<< mp[i].v << " " << dis[mp[i].v] << endl;
                    if(vis[mp[i].v] == false)
                    {
                        stac[top++] = mp[i].v;
                        vis[mp[i].v] = true;
                    }
                }
            }
        }
        return dis[n];
    }
    int main()
    {
        //while(scanf("%d%d",&n,&m) != EOF)
        //{
        memset(mp,0,sizeof(mp));
        scanf("%d%d",&n,&m);
        cnt = 0;
        memset(head,-1,sizeof(head));
        for(int i = 0; i < m; ++i)
        {
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            adde(a,b,c);
        }
        printf("%d
    ",spfa());
        //}
    }
  • 相关阅读:
    初识Node
    从服务器获取信息的方式
    引用对象的指针传递
    使用定时器来控制一次执行的任务数量
    JS字符串拼接的方法及性能比较
    提升JS比较效率的方式
    DOM访问优化
    JS数据存取效率的优化
    JS脚本加载顺序及优化
    python 基本用法
  • 原文地址:https://www.cnblogs.com/mltang/p/9805741.html
Copyright © 2011-2022 走看看