无向图。对于两个相连的点,如果A到终点的最短路径大于B到终点的最短路径,那么A可以往B走,求最终从起点到终点有多少种走法?

首先我们可以直接预处理所有点到终点的最短路径。然后分别判断所有的边两点是否满足d[U[i]]>d[V[i]],然后把把满足条件的加入到一个新图中即可。

由于新图是一个有向无环图,那么只需要记忆话搜就可以解决问题了。

召唤代码君:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define maxn 1010
#define maxm 2222222
using namespace std; struct heapnode{
int D,U;
bool operator < (heapnode HP) const{
return D>HP.D;
}
};
const int inf=~0U>>;
int to[maxm],next[maxm],c[maxm],first[maxn],edge;
int d[maxn],f[maxn];
bool done[maxn];
int n,m;
int U[maxm],V[maxm],W[maxm]; void _init()
{
edge=-;
for (int i=; i<=n; i++) first[i]=f[i]=-,d[i]=inf,done[i]=false;
} void addedge(int uu,int vv,int ww)
{
edge++;
to[edge]=vv,c[edge]=ww,next[edge]=first[uu],first[uu]=edge;
} void dijkstra(int t)
{
priority_queue<heapnode> Q;
Q.push((heapnode){,t}),d[t]=;
while (!Q.empty())
{
heapnode cur=Q.top();
Q.pop();
int V=cur.U;
if (done[V]) continue;
done[V]=true;
for (int i=first[V]; i!=-; i=next[i])
if (d[V]+c[i]<d[to[i]])
d[to[i]]=d[V]+c[i],Q.push((heapnode){d[to[i]],to[i]});
}
} int get(int x)
{
if (f[x]!=-) return f[x];
if (x==) return f[x]=;
f[x]=;
for (int i=first[x]; i!=-; i=next[i])
f[x]+=get(to[i]);
return f[x];
} int main()
{
while (scanf("%d",&n) && n)
{
scanf("%d",&m);
_init();
for (int i=; i<=m; i++)
{
scanf("%d%d%d",&U[i],&V[i],&W[i]);
addedge(U[i],V[i],W[i]);
addedge(V[i],U[i],W[i]);
}
dijkstra();
edge=-;
for (int i=; i<=n; i++) first[i]=-;
for (int i=; i<=m; i++)
{
if (d[U[i]]>d[V[i]]) addedge(U[i],V[i],);
else if (d[V[i]]>d[U[i]]) addedge(V[i],U[i],);
}
printf("%d\n",get());
}
return ;
}

UVA10917_Walk Through the Forest的更多相关文章

  1. 基于netty轻量的高性能分布式RPC服务框架forest<下篇>

    基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开 ...

  2. 基于netty轻量的高性能分布式RPC服务框架forest<上篇>

    工作几年,用过不不少RPC框架,也算是读过一些RPC源码.之前也撸过几次RPC框架,但是不断的被自己否定,最近终于又撸了一个,希望能够不断迭代出自己喜欢的样子. 顺便也记录一下撸RPC的过程,一来作为 ...

  3. [Machine Learning & Algorithm] 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

  4. STL : map函数的运用 --- hdu 4941 : Magical Forest

    Magical Forest Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  5. 异常检测算法--Isolation Forest

    南大周志华老师在2010年提出一个异常检测算法Isolation Forest,在工业界很实用,算法效果好,时间效率高,能有效处理高维数据和海量数据,这里对这个算法进行简要总结. iTree 提到森林 ...

  6. hdu4941 Magical Forest (stl map)

    2014多校7最水的题   Magical Forest Magical Forest Time Limit: 24000/12000 MS (Java/Others)    Memory Limit ...

  7. HDU5739 Fantasia(点双连通分量 + Block Forest Data Structure)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5739 Description Professor Zhang has an undirect ...

  8. POJ 1873 - The Fortified Forest 凸包 + 搜索 模板

    通过这道题发现了原来写凸包的一些不注意之处和一些错误..有些错误很要命.. 这题 N = 15 1 << 15 = 32768 直接枚举完全可行 卡在异常情况判断上很久,只有 顶点数 &g ...

  9. 简单几何(凸包+枚举) POJ 1873 The Fortified Forest

    题目传送门 题意:砍掉一些树,用它们做成篱笆把剩余的树围起来,问最小价值 分析:数据量不大,考虑状态压缩暴力枚举,求凸包以及计算凸包长度.虽说是水题,毕竟是final,自己状压的最大情况写错了,而且忘 ...

随机推荐

  1. 动态加载与插件系统的初步实现(一):反射与MEF解决方案

    涉及内容: 反射与MEF解决方案 AppDomain卸载与代理 WinForm.WcfRestService示 PRRT1: 反射实现 插件系统的基本目的是实现宿主与组件的隔离,核心是作为接驳约定的接 ...

  2. 设置JFrame背景图片

    这里我就放上改写的代码吧,不做多的解释,推荐一个好的博文 https://blog.csdn.net/jdsjlzx/article/details/16831815 public void ini_ ...

  3. 什么是Gradle

    一.什么是Gradle 简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译.打包等过程.我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建ap ...

  4. Linux命令应用大词典-第1章 登录、退出、关机和重启

    1.1 login:用户登录系统 1.2 logout:退出登录shell 1.3 nologin:限制用户登录 1.4 exit:退出shell 1.5 sulogin:单用户登录(single u ...

  5. 静态构造器(static constructor)

    1.定义: 静态构造函数是实现对一个类进行初始化的方法成员. 它一般用于对静态数据的初始化. 静态构造函数不能有参数,不能有修饰符而且不能被调用,当类被加载时,类的静态构造函数自动被调用. 2.特点: ...

  6. 基于python的scrapy框架爬取豆瓣电影及其可视化

    1.Scrapy框架介绍 主要介绍,spiders,engine,scheduler,downloader,Item pipeline scrapy常见命令如下: 对应在scrapy文件中有,自己增加 ...

  7. FFT(快速傅里叶变换)算法详解

    多项式的点值表示(Point Value Representation) 设多项式的系数表示(Coefficient Representation): \[ \begin{align*} \mathr ...

  8. 线程_synchronized_volatile_ReentranLock

    线程:cpu同时执行多个任务 synchonized   代码块,对象,类 同步方法和非同步方法可以同时执行同步方法可以调用同步方法(重入)脏读:之同步写,不同步读死锁的demo  一个线程先对A加锁 ...

  9. Python交互数据库(Mysql | Mongodb | Redis)

    数据库 Mysql Mysql MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品 MyS ...

  10. unload没有用

    今天下午测试了unload这个事件包括beforeunload <script type="text/javascript"> window.addEventListe ...