题目描述

“RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方,而且他们目前处在标注为“1”的小镇上,而送餐的地点在标注为“N”的小镇。(有点废话)除此之外还知道这些道路都是单向的,从小镇I到J需要花费D[I,J]的时间,为了更高效快捷的将快餐送到顾客手中,

他们想走一条从小镇1到小镇N花费最少的一条路,但是他们临出发前,撞到因为在路上堵车而生气的FYY,深受启发,不能仅知道一条路线,万一。。。,于是,他们邀请FYY一起来研究起了下一个问题:这个最少花费的路径有多少条?

输入输出格式

输入格式:

输入文件第一行为两个空格隔开的数N,E,表示这张地图里有多少个小镇及有多少边的信息。

下面E行,每行三个数I、J、C,表示从I小镇到J小镇有道路相连且花费为C.(注意,数据提供的边信息可能会重复,不过保证I<>J,1<=I,J<=n)。

输出格式:

输出文件包含两个数,分别是最少花费和花费最少的路径的总数.

两个不同的最短路方案要求:路径长度相同(均为最短路长度)且至少有一条边不重合。

若城市N无法到达则只输出一个(‘No answer’);

输入输出样例

输入样例#1:

5 4
1 5 4
1 2 2
2 5 2
4 1 1
输出样例#1:

4 2

说明

对于30%的数据 N<=20;

对于100%的数据 1<=N<=2000,0<=E<=N*(N-1), 1<=C<=10.

数据有重复,注意判重

#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int N = ;
int head[N];
struct node{
int v,w,next;
}edge[N*N/];
int n,e,num=,dis[N];bool vis[N];
void add_edge(int x,int y,int z)
{
edge[++num].v=y;edge[num].w=z;edge[num].next=head[x];head[x]=num;
}
int ans1,cnt[N];
int minn=;
void spfa(int x)
{
queue<int>que;
vis[]=;dis[]=;cnt[]=;
que.push();
while(!que.empty())
{
int u=que.front();que.pop();
if(u==n)continue;
for(int i=head[u];i;i=edge[i].next)
{
int v=edge[i].v;
if(dis[u]+edge[i].w<dis[v])
{
if(dis[u]+edge[i].w<dis[v])
{
dis[v]=dis[x]+edge[i].w;
cnt[v]=cnt[u];
}
if(!vis[v])que.push(v),vis[v]=;
}
else if(dis[u]+edge[i].w==dis[v]) cnt[v]+=cnt[u];
}
vis[u]=;cnt[u]=;
}
}
int main()
{
memset(dis,0x3f,sizeof dis);
scanf("%d%d",&n,&e);
int a,b,c;
for(int i=;i<=e;i++)
{
scanf("%d%d%d",&a,&b,&c);
add_edge(a,b,c);
}
spfa();
if(dis[n]==0x3f3f3f3f)
puts("No Answer");
else printf("%d %d\n",dis[n],cnt[n]);
return ;
}

luogu P1608 路径统计的更多相关文章

  1. 【luogu P1608 路径统计】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1608 补上一发最短路计数! 感谢王强qwqqqq @Lance1ot #include <queue& ...

  2. Luogu P1608 路径统计 最短路计数

    颓了...重边导致我乖乖用邻接矩阵.... 好吧就是个最短路计数....如果更新时d[v]==d[u]+w[i],就可以接起来,把两个加在一起.. 如果d[v]>d[u]+w[i],那么c[v] ...

  3. 洛谷——P1608 路径统计

    P1608 路径统计 题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方, ...

  4. 洛谷 P1608 路径统计

    P1608 路径统计 题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方, ...

  5. luogu 1608 路径统计--最短路计数

    https://www.luogu.org/problemnew/show/P1608 题意https://www.cnblogs.com/rmy020718/p/9440588.html相似,建议还 ...

  6. P1608 路径统计

    题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方,而且他们目前处在标注为 ...

  7. 洛谷P1608路径统计

    题目 这个提示一个简单的最短路计数,除了用数组存上最短路的个数的做法以外,还有可以在得出最短路之后,搜索加剪枝的方法来通过该题. 可以反向搜索用A*的方法来通过,但是这个题的去重十分的恶心,需要一些玄 ...

  8. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  9. 某模拟赛C题 树上路径统计 (点分治)

    题意 给定一棵有n个节点的无根树,树上的每个点有一个非负整数点权.定义一条路径的价值为路径上的点权和-路径上的点权最大值. 给定参数P,我!=们想知道,有多少不同的树上简单路径,满足它的价值恰好是P的 ...

随机推荐

  1. 命令java 找不到或无法加载主类

    这个是由于用了package导致cmd下找不到class文件产生的错误,解决方案: 方法1.删除HelloWord.java源程序中的第一行package demo1:然后在cmd下正常使用javac ...

  2. P2255 [USACO14JAN]记录奥林比克Recording the M…

    P2255 [USACO14JAN]记录奥林比克Recording the M… 题目描述 Being a fan of all cold-weather sports (especially tho ...

  3. laravel5.2总结--关联关系

     参考文章 http://laravelacademy.org/post/1095.html http://laravelacademy.org/post/1174.html http://d.lar ...

  4. laravel5.2总结--集合

          类(Laravel集合基类) Illuminate\Support\Collection 类提供一个流畅.便利的封装来操控数组数据,官方提供了很多辅助函数,方便对数据进行各种处理,Coll ...

  5. Java EnumSet工作原理初窥

    EnumSet是Java枚举类型的泛型容器,Java既然有了SortedSet.TreeSet.HashSet等容器,为何还要多一个EnumSet<T>呢?答案肯定是EnumSet有一定的 ...

  6. 移动web前端开发小结

    注意:Chrome模拟手机的显示的界面是有误差的,强烈建议一定要在真机测试自己的移动端页面(以移动端页面为准). 1.页面高度渲染错误,页面的高度是否包含了导航,(华为手机就是偏偏有底部菜单) 设置窗 ...

  7. hdu 4185 二分图最大匹配

    Oil Skimming Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. 文本文件txt生成excel

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  9. Python实现knn

    #coding:utf-8 import numpy as np import operator import os def classify0(inX, dataSet, labels, k): d ...

  10. Codeforces Beta Round #95 (Div. 2) C 组合数学

    C. The World is a Theatre time limit per test 2 seconds memory limit per test 256 megabytes input st ...