• POJ 3159 【朴素的差分约束】


    好吧终于知道什么是“高大上”的差分约束了。嗷嗷

    题意:

    小朋友们分糖果,某个小朋友不想另外一个小朋友分到的糖果数比自己多N块以上。

    求编号为N的小朋友最多比编号为1的小朋友多分多少块糖果。

    思路:

    差分约束,用最短路做。

    这题用SPFA.

    查分约束的学习感谢博客:http://www.cnblogs.com/void/archive/2011/08/26/2153928.html

    注意:

    POJ也是拼,第一次碰到永std的queue会超时,需要手写一个人工栈的情况...

    代码:

    #include<stdio.h>
    #include<algorithm>
    #include<queue>
    #include<string.h>
    using namespace std;
    const int inf=0x3f3f3f3f;
    struct edge
    {
        int id,w;
        edge *next;
    };
    edge edges[150010];
    edge *adj[30005];
    bool vis[30005];
    int ednum;
    int n,m;
    int dis[30005];
    void SPFA()
    {
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++)
        {
            dis[i]=inf;
        }
        dis[1]=0;
        int q[30005];
        int top=0;
        q[++top]=1;
        vis[1]=1;
        while(top)
        {
            int tmp=q[top--];
            vis[tmp]=0;
            for(edge *p=adj[tmp];p;p=p->next)
            {
                if(dis[p->id]>dis[tmp]+p->w)
                {
                    dis[p->id]=dis[tmp]+p->w;
                    if(!vis[p->id])
                    {
                        q[++top]=p->id;
                        vis[p->id]=1;
                    }
                }
            }
        }
    }
    inline void addEdge(int a,int b,int c)
    {
        edge *tmp;
        tmp=&edges[ednum];
        ednum++;
        tmp->id=b;
        tmp->w=c;
        tmp->next=adj[a];
        adj[a]=tmp;
    }
    int main()
    {
        int a,b,c;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            addEdge(a,b,c);
        }
        SPFA();
        printf("%d
    ",dis[n]);
    }
  • 相关阅读:
    文章截断显示方法
    mysql数据库基础知识和认识
    js 返回上一页和刷新以及页面跳转
    编译原理根据项目集规范族构造LR(0)分析表
    编译原理LR(0)项目集规范族的构造详解
    编译原理复习
    FIRST集合、FOLLOW集合及LL(1)文法求法
    UML时序图
    UML活动图(二)
    UML活动图(Activity Diagram)
  • 原文地址:https://www.cnblogs.com/tun117/p/4851961.html
Copyright © 2020-2023  润新知