• bzoj1975【Sdoi2010】魔法猪学院


    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1975

    sol  :k短路裸题

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    const int Mxn=5010;
    const int Mxm=200010;
    
    struct Node { double f,g; int pos; } Q[10*Mxm];
    bool operator < (Node a,Node b) { return a.f<b.f; }
    
    queue <int> q;
    
    int n,m,ans,siz,vis[Mxn];
    int tot,head[Mxn],nxt[Mxm],ver[Mxm];
    int Tot,Head[Mxn],Nxt[Mxm],Ver[Mxm];
    double e,dis[Mxn],val[Mxm],Val[Mxm];
    
    void add(int x,int y,double z)
    {
        nxt[++tot]=head[x];
        ver[tot]=y;
        val[tot]=z;
        head[x]=tot;
    }
    
    void Add(int x,int y,double z)
    {
        Nxt[++Tot]=Head[x];
        Ver[tot]=y;
        Val[tot]=z;
        Head[x]=Tot;
    }
    
    void spfa()
    {
        memset(dis,0x7f,sizeof(dis));
        dis[n]=0,vis[n]=1,q.push(n);
        while(!q.empty())
        {
            int x=q.front(); q.pop();
            for(int i=Head[x];i;i=Nxt[i])
            {
                int y=Ver[i];
                if(dis[y]>dis[x]+Val[i])
                {
                    dis[y]=dis[x]+Val[i];
                    if(!vis[y]) q.push(y),vis[y]=1;
                }
            }
            vis[x]=0;
        }
    }
    
    void push(Node x)
    {
        int now=siz+1;
        Q[++siz]=x;
        while(now>1)
        {
            if(Q[now>>1]<Q[now]) break;
            swap(Q[now],Q[now>>1]);
            now>>=1;
        }
    }
    
    Node pop()
    {
        int now=1,Next;
        Node tmp=Q[1]; Q[1]=Q[siz--];
        while((now<<1)<=siz)
        {
            Next=now<<1;
            if(Next<siz&&Q[Next+1]<Q[Next]) Next++;
            if(Q[now]<Q[Next]) break;
            swap(Q[now],Q[Next]);
            now=Next;
        }
        return tmp;
    }
    
    void Astar()
    {
        Node a={dis[1],0,1}; push(a);
        while(siz)
        {
            Node now=pop(); int x=now.pos;
            for(int i=head[x];i;i=nxt[i])
            {
                int y=ver[i];double g=now.g; 
                Node b={g+val[i]+dis[y],g+val[i],y}; push(b);
            }
            if(x==n)
            {
                e-=now.f; if(e<0) return;
                ans++;
            }
        }
    }
    
    int main()
    {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
        scanf("%d%d%lf",&n,&m,&e);
        for(int i=1,x,y;i<=m;i++)
        {
            double z; scanf("%d%d%lf",&x,&y,&z);
            add(x,y,z),Add(y,x,z);
        }
        spfa();
        Astar();
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    Mybatis应用
    MyBatis
    jQuery中.bind() .live() .delegate() .on()的区别
    SpringMVC (八)SpringMVC返回值类型
    SpringMVC(七)参数的自动装配和路径变量
    SpringMVC (六)注解式开发
    SpringMVC (五)视图解析器
    SpringMVC (四)MultiActionController
    SourceTree的使用
    Idea中使用git
  • 原文地址:https://www.cnblogs.com/xiaoxubi/p/6635891.html
Copyright © 2020-2023  润新知