P1608 路径统计
时间:2019-10-16
本文章向大家介绍P1608 路径统计,主要包括P1608 路径统计使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最短路计数
这题要用dij,,不知道spfa为什么会出锅,也不会改
就对每个点记录一个cnt
每次更新最短路的时候就将x的cnt传给to
如果最短路相等,就给to的cnt加上x的cnt
然后就是dij板子,,其实就是个板子加上一点修改,,
#include<iostream> #include<cstdio> #include<queue> using namespace std; const int N=2005; int head[N],d[N],ans[N]; int mp[N][N]; bool in[N]; int cnt,n,m; struct node{ int to,nxt,dis; }e[(N*N)<<1]; struct edge{ int val,num; bool operator < (const edge &x)const{ return val>x.val; } }; inline void add(int from,int to,int dis){ e[++cnt]=(node){to,head[from],dis}; head[from]=cnt; } priority_queue<edge>q; void spfa(){ q.push((edge){0,1}); d[1]=0;ans[1]=1; while(!q.empty()){ int t=q.top().num; q.pop(); if(in[t])continue; in[t]=1; for(int i=head[t];i!=0;i=e[i].nxt){ if(!in[e[i].to]&&d[e[i].to]>d[t]+e[i].dis){ d[e[i].to]=d[t]+e[i].dis; ans[e[i].to]=ans[t]; q.push((edge){d[e[i].to],e[i].to}); } else if(d[e[i].to]==d[t]+e[i].dis) ans[e[i].to]+=ans[t]; } } } int main(){ int x,y,z; scanf("%d%d",&n,&m); for(int i=1;i<=m;++i){ scanf("%d%d%d",&x,&y,&z); if(mp[x][y]==0||mp[x][y]>z){ add(x,y,z);mp[x][y]=z; } } for(int i=1;i<=n;++i) d[i]=1e9; spfa(); if(d[n]==1e9)printf("No answer"); else printf("%d %d",d[n],ans[n]); return 0; }
原文地址:https://www.cnblogs.com/sanjinliushi/p/11688100.html
- logback + slf4j + jboss + spring mvc
- Oracle XE http端口8080的修改
- django之对FileField字段的upload_to的设定
- JAVA_HOME环境变量失效的解决办法
- JBOSS EAP 6.0+ Standalone模式安装成Windows服务
- Django 设置media static
- Django---Ajax
- 利用Spring MVC搭建REST Service
- ehcache2.8.3入门示例:hello world
- day4、Linux基础题目
- 命令行执行Django脚本的方法
- Spring Security笔记:Hello World
- day5、文件乱码怎么解决
- javascript计算对象的长度
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法