洛谷 1608 路径统计
【题解】
最短路计数的模板题吧。。要把重边判掉。。
1 #include<cstdio> 2 #include<algorithm> 3 #define N 2010 4 #define rg register 5 using namespace std; 6 int n,m,tot=0,dis[N],pos[N],last[N],cnt[N],rec[N][N][11]; 7 struct edge{ 8 int to,pre,dis; 9 }e[N*N]; 10 struct heap{ 11 int poi,dis; 12 }h[N]; 13 inline int read(){ 14 int k=0,f=1; char c=getchar(); 15 while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); 16 while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar(); 17 return k*f; 18 } 19 inline void add(int x,int y,int z){ 20 e[++tot]=(edge){y,last[x],z}; last[x]=tot; 21 } 22 inline void up(int x){ 23 int fa; 24 while((fa=x>>1)&&h[fa].dis>h[x].dis){ 25 swap(h[x],h[fa]); swap(pos[h[x].poi],pos[h[fa].poi]); 26 x=fa; 27 } 28 } 29 inline void down(int x){ 30 int son; 31 while((son=x<<1)<=tot){ 32 if(son<tot&&h[son+1].dis<h[son].dis) son++; 33 if(h[son].dis<h[x].dis){ 34 swap(h[x],h[son]); swap(pos[h[x].poi],pos[h[son].poi]); 35 x=son; 36 } 37 else return; 38 } 39 } 40 inline void dijkstra(int x){ 41 h[tot=pos[x]=cnt[x]=1]=(heap){x,dis[x]=0}; 42 while(tot){ 43 int now=h[1].poi; h[1]=h[tot--]; if(tot) down(1); 44 for(rg int i=last[now],to;i;i=e[i].pre) 45 if(dis[to=e[i].to]>=dis[now]+e[i].dis){ 46 if(dis[to]==dis[now]+e[i].dis) cnt[to]+=cnt[now]; 47 else{ 48 dis[to]=dis[now]+e[i].dis; 49 cnt[to]=cnt[now]; 50 if(!pos[to]) h[pos[to]=++tot]=(heap){to,dis[to]}; 51 else h[pos[to]].dis=dis[to]; 52 up(pos[to]); 53 } 54 } 55 } 56 } 57 int main(){ 58 n=read(); m=read(); 59 for(rg int i=1;i<=n;i++) dis[i]=0X7f7f7f7f; 60 for(rg int i=1;i<=n;i++) cnt[i]=0; 61 for(rg int i=1;i<=m;i++){ 62 int u=read(),v=read(),w=read(); 63 if(!rec[u][v][w]) rec[u][v][w]++; 64 else continue; 65 add(u,v,w); 66 } 67 dijkstra(1); 68 if(cnt[n]) printf("%d %d\n",dis[n],cnt[n]); 69 else puts("No answer"); 70 return 0; 71 }
View Code
转载于:https://www.cnblogs.com/DriverLao/p/8678831.html
洛谷 1608 路径统计相关推荐
- 刷题-洛谷-P1179 数字统计
P1179 数字统计-C语言 1.题目 2.解题过程 结果: 代码: //洛谷 P1179 数字统计 #include <stdio.h> //#define MIN 1 //#defin ...
- 题解洛谷1179数字统计 记录问题
文章目录 数字统计 一.思路1 二.思路二 优化 1.想法 2.代码 二.继续优化 不用类型转换 总结 数字统计 题目描述 请统计某个给定范围[L, R][L,R]的所有整数中,数字 22 出现的次数 ...
- 洛谷 P1176 路径计数2
P1176 路径计数2 题目描述 一个N×N的网格,你一开始在(1, 1),即左上角.每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N, N),即右下角有多少种方法. 但是这个问题太简单了, ...
- 洛谷——P1176 路径计数2
P1176 路径计数2 题目描述 一个N \times NN×N的网格,你一开始在(1,1)(1,1),即左上角.每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N,N)(N,N),即右下角有 ...
- 洛谷P1110 报表统计 multiset stl好题
题目链接 一开始自己想的是multiset维护顺序结构,然后查找所有的值差最小时候找加入的当前点的前驱以及后继,然后查找相邻两个的就用线段树维护一个差最小值~,但是后来发现是全局的,直接再开一个mul ...
- 【洛谷】P1567 统计天数
题目地址: https://www.luogu.com.cn/problem/P1567 题目描述: 炎热的夏日,KC非常的不爽.他宁可忍受北极的寒冷,也不愿忍受厦门的夏天.最近,他开始研究天气的变化 ...
- 【暑期每日一题】洛谷(一)
[暑期每日一题]洛谷 P1048 [NOIP2005 普及组] 采药 [暑期每日一题]洛谷 P1048 [NOIP2005 普及组] 采药_辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为 ...
- 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径
//bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...
- 洛谷 P3384 【模板】树链剖分-树链剖分(点权)(路径节点更新、路径求和、子树节点更新、子树求和)模板-备注结合一下以前写的题目,懒得写很详细的注释...
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...
最新文章
- C/C++中memset()函数
- python映射类型-Python中的映射数据类型 dict
- .NET自动化测试工具链:Selenium+NUnit+ExtentReport
- CSS3 Filter的十种特效
- 深入Bert实战(Pytorch)----fine-Tuning 2
- parasoft Jtest 使用教程:清除错误消息与运行内置测试配置
- python语言适合哪些领域的计算问题数据处理和文本挖掘_R和Python中文本挖掘8大入门指南...
- php向数据库 插入图片,php-向/从MySQL数据库插入/查看图像
- 网站优化JS css压缩
- 第十三章 第六节 本章小结
- 好用的图片压缩工具Tinypng
- Node.js mm131图片批量下载爬虫1.00 iconv协助转码
- 基于android的个人收支财务管理,基于Android的个人财务管理系统的设计与实现.doc...
- 浙大PAT 1102
- 将WinPE安装至硬盘
- 前端面试题及答案(字节跳动)(二)
- 什么软件可以给图片去雾?分享三种图片去雾软件给你。
- 笔记本处理器排名_【笔记本】AMD YES,霸占性能排行榜前四
- 趣拿整合线上线下营销,解决新品推广痛点
- linux克隆步骤,CentOS克隆机器步骤,图文教程
热门文章
- *27.硬实时和软实时
- C++末尾匹配(C与C++解决)
- 全球首个AI设计药物进入人体试验阶段
- 在Labview中调用M文件(Matlab文件)
- 嵌入式开发调试学习与思考
- linux无显卡运行程序,Ubuntu中在应用程序菜单添加未显示的应用程序启动器
- php 模拟 https请求头,php 模拟 http 请求
- html没有css还有用吗,如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?_html/css_WEB-ITnose...
- EL 表达式 JSTL 标签库
- 021_Form表单