Description

给定e和边权,求有多少条不同的道路能从1到n使得边权之和的和小于e

Solution

A*裸题 娘的要是SPFA再把dis写成to就剁手

// By YoungNeal
#include<queue>
#include<cstdio>
#include<cstring>
#define int long long
using namespace std;

double e;
int ans,INF;
];
];
];
int n,m,cnt1,cnt2;
],head2[];

struct Edge1{
    int to,nxt;
    double dis;
}edge1[];

struct Edge2{
    int to,nxt;
    double dis;
}edge2[];

void add1(int x,int y,double z){
    edge1[++cnt1].to=y;
    edge1[cnt1].dis=z;
    edge1[cnt1].nxt=head1[x];
    head1[x]=cnt1;
}

void add2(int x,int y,double z){
    edge2[++cnt2].to=y;
    edge2[cnt2].dis=z;
    edge2[cnt2].nxt=head2[x];
    head2[x]=cnt2;
}

struct Node{
    int now;
    double f,dis;
    friend bool operator<(Node a,Node b){
        return a.dis+a.f>b.dis+b.f;
    }
};

queue<int> q;
priority_queue<Node> pq;

void spfa(int s){
    dis[s]=;
    q.push(s);
    while(q.size()){
        int u=q.front();q.pop();
        b[u]=;
        for(int i=head2[u];i;i=edge2[i].nxt){
            int to=edge2[i].to;
            if(dis[to]>dis[u]+edge2[i].dis){
                dis[to]=dis[u]+edge2[i].dis;
                if(!b[to]){
                    q.push(to);
                    b[to]=;
                }
            }
        }
    }
}

signed main(){
    scanf("%lld%lld%lf",&n,&m,&e);
    ;i<=n;i++) dis[i]=;
    ;i<=m;i++){
        int x,t;double q;
        scanf("%lld%lld%lf",&x,&t,&q);
        add1(x,t,q);add2(t,x,q);
    }
    spfa(n);
    INF=e/dis[];
    Node start;
    start.now=,start.f=dis[],start.dis=;
    pq.push(start);
    while(pq.size()){
        Node now=pq.top();pq.pop();
        if(now.now==n){
            e-=now.dis;
            ){
                printf("%lld",ans);
                ;
            }
            ans++;
            continue;
        }
        for(int i=head1[now.now];i;i=edge1[i].nxt){
            Node nxt;
            nxt.now=edge1[i].to;
            nxt.dis=now.dis+edge1[i].dis;
            nxt.f=dis[nxt.now];
            pq.push(nxt);
        }
    }
}

[SDOI2010] 魔法猪学院的更多相关文章

  1. Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1357  Solved: 446[Submit][Statu ...

  2. bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]

    1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...

  3. BZOJ_1975_[Sdoi2010]魔法猪学院_A*

    BZOJ_1975_[Sdoi2010]魔法猪学院_A* Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPi ...

  4. K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院

    A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...

  5. bzoj 1975 [Sdoi2010]魔法猪学院

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1758  Solved: 557[Submit][Statu ...

  6. P2483 [SDOI2010]魔法猪学院

    P2483 [SDOI2010]魔法猪学院 摘要 --> 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世 ...

  7. [BZOJ1975][SDOI2010]魔法猪学院(k短路,A*)

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2748  Solved: 883[Submit][Statu ...

  8. 【BZOJ1975】[Sdoi2010]魔法猪学院 A*

    [BZOJ1975][Sdoi2010]魔法猪学院 Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪 ...

  9. bzoj1975: [Sdoi2010]魔法猪学院【k短路&A*算法】

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2446  Solved: 770[Submit][Statu ...

  10. [SDOI2010]魔法猪学院(A*,最短路)

    [SDOI2010]魔法猪学院(luogu) Description 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig ...

随机推荐

  1. 快速掌握Shell编程

    作者原创作品,转载请注明出处 (一)Shell编程概述 1.1 shell简述 Shell编程和JavaScript非常相似,Shell和JavaScript都是弱类型语言,同时也都是解释型语言.解释 ...

  2. NLP︱高级词向量表达(二)——FastText(简述、学习笔记)

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper: ...

  3. 1.3 PCI总线的存储器读写总线事务

    总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备.在处理器系统中,这些数据传送都要依赖一定的规则,PCI总线并不例外. PCI总线使用单 ...

  4. Eviews 9.0新版本新功能——预测(Auto-ARIMA预测、VAR预测)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 9.预测功能 新增需要方法的预测功能:Auto ...

  5. dojo级联步骤

    dojo级联步骤 1.数据请求回来后,检查数据格式是否满足下拉框的数据格式: 2.通过firebug进行调试,检查select下拉框子项结点是否取道: 3.查看API文档,保证改变store的方法是正 ...

  6. python做基本的图像处理

    PIL是python中的图像处理类库,为python提供了基本的图像处理和基本操作.而PIL中最重要的就是Image模块,下面给出具体的例子来理解此模块. 读取一幅图像 我们用Image模块中的ope ...

  7. asp.net mvc razor布局页中a标签的href的跳转问题

    笔者做了一个文件上传系统,文件上传后,保存在wwwroot目录的file文件夹中,并把该文件的路径保存到数据库中, 如这样的一个路径保存在数据库: file/b775f487-0127-41e0-9d ...

  8. iOS - Mac 常用快捷键

    前言 可以按下组合键来实现通常需要鼠标.触控板或其他输入设备才能完成的操作. 要使用键盘快捷键,需按住一个或多个修饰键,同时按快捷键的最后一个键.例如,要使用快捷键 Command-C(拷贝),请按住 ...

  9. input 和button的区别

    一,区别一 先来看一个问题 <input type="button" class="btn-upload bg-org-code" name=" ...

  10. 纯CSS实现二级导航下拉菜单--css的简单应用

    思想:使用css的display属性控制二级下拉菜单的显示与否.当鼠标移动到一级导航菜单的li标签时,显示二级导航菜单的ul标签.由于实现起来比较简单,所以在这里直接给出了参考代码. 1.纯CSS二级 ...