luogu P1807 最长路_NOI导刊2010提高(07)
题目描述
设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j。设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径。
输入格式
输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v)。
输出格式
输出文件longest.out,一个整数,即1到n之间的最长路径.如果1到n之间没连通,输出-1。
拓扑排序求最长路
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
const int N=1e3+5e2+11,M=5e4+10;
int in[N],maxn[M],bj[M];
int Next[M],head[N],go[M],w[M],tot;
inline void add(int u,int v,int o){
Next[++tot]=head[u];head[u]=tot;go[tot]=v;w[tot]=o;
}
int n,m;
void TopSort()
{
queue<int>q;
for(int i=1;i<=n;i++)
if(in[i]==0)q.push(i);
while(q.size()){
int u=q.front();
q.pop();
for(int i=head[u];i;i=Next[i]){
int y=go[i];
in[y]--;
if(bj[u]==1){
if(maxn[y]<maxn[u]+w[i])
maxn[y]=maxn[u]+w[i];
bj[y]=1;
}
if(in[y]==0)q.push(y);
}
}
}
int main(){
cin>>n>>m;
for(int i=1,u,v,o;i<=m;i++){
scanf("%d%d%d",&u,&v,&o);
add(u,v,o);in[v]++;
}
maxn[n]=-1;bj[1]=1;
TopSort();
cout<<maxn[n]<<endl;
return 0;
}
spfa求最长路
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2510,M=5e5+10,inf=1<<30;
int nxt[M],head[N],go[M],w[M],tot;
inline void add(int u,int v,int o){
nxt[++tot]=head[u];head[u]=tot;go[tot]=v;w[tot]=o;
}
int n,m,dis[N];
bool vis[N];
queue<int>q;
inline void dj(){
memset(dis,0xcf,sizeof(dis)); q.push(1); dis[1]=0;
while(q.size()){
int u=q.front(); vis[u]=0; q.pop();
for(int i=head[u];i;i=nxt[i]){
int v=go[i];
if(dis[v]<dis[u]+w[i]){
dis[v]=dis[u]+w[i];
if(!vis[v])q.push(v),vis[v]=1;
}
}
}
}
signed main(){
cin>>n>>m;
for(int i=1,u,v,o;i<=m;i++){
scanf("%d%d%d",&u,&v,&o);
add(u,v,o);
}
dj();
if(dis[n]>=0)cout<<dis[n]<<endl;
else cout<<-1<<endl;
}
luogu P1807 最长路_NOI导刊2010提高(07)的更多相关文章
- 【luogu P1807 最长路_NOI导刊2010提高(07)】 题解
题目链接:https://www.luogu.org/problemnew/show/P1807 求最大路?就是把权值取相反数跑最短路. #include <cstdio> #includ ...
- 洛谷 P1807 最长路_NOI导刊2010提高(07) 题解
P1807 最长路_NOI导刊2010提高(07) 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算 ...
- 洛谷 P1807 最长路_NOI导刊2010提高(07)
最长路 #include <iostream> #include <cstdio> #include <cstring> #include <queue> ...
- 洛谷 P1807 最长路_NOI导刊2010提高(07)题解
相当与一个拓扑排序的模板题吧 蒟蒻的辛酸史 题目大意:给你一个有向无环图,让你求出1到n的最长路,如果没有路径,就输出-1 思路:一开始以为是一个很裸的拓扑排序 就不看题目,直接打了一遍拓扑排序 然后 ...
- 洛谷P1807 最长路_NOI导刊2010提高(07)
//拓扑排序求最长路 #include<bits/stdc++.h> #include<queue> using namespace std; const int INF=0x ...
- 图论--最长路--洛谷P1807 最长路_NOI导刊2010提高(07)
题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 ...
- P1807 最长路_NOI导刊2010提高(07)
题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入输出 ...
- 题解【洛谷P1807】最长路_NOI导刊2010提高(07)
题面 题解 最长路模板. 只需要在最短路的模板上把符号改一下\(+\)初值赋为\(-1\)即可. 注意一定是单向边,不然出现了正环就没有最长路了,就好比出现了负环就没有最短路了. 只能用\(SPFA\ ...
- luogu P1775 古代人的难题_NOI导刊2010提高(02)(斐波纳契+数学)
题意 已知x,y为整数,且满足以下两个条件: 1.x,y∈[1…k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满足上述条件的x,y并且使得x^2+y^2的值最大. ...
随机推荐
- 安全路径——最短路径树+dsu缩边
题目描述 思路 首先想到$dijkstra$跑完之后$build$一棵最短路径树.要找到每个节点i到根的满足要求的最短路,考虑把一些非树边加进去. 对于非树边$(u,v)$,因为节点i上方的边被占领, ...
- 【原创】python倒排索引之查找包含某主题或单词的文件
什么是倒排索引? 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射.它是文 ...
- 《吊打面试官》系列-Redis常见面试题(带答案)
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源,有面试点思维导图,欢迎[Star]和[完善] 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在 ...
- c++中while(cin>>str)和ctrl z的相关问题探讨
对于while (cin>>str)和ctrl z的问题,网上有以下解释: -------------------------------------------------------- ...
- 关于Python中的yield的理解
生成器:yield表达式构成的函数就是生成器:每一个生成器都是一个迭代器(但是迭代器不一定是生成器).return就是迭代器: yield的功能类似于return,不同之处在于它返回的是生成器. 什么 ...
- redis 数据库主从不一致问题解决方案
在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题. 问:常见的数据库集群架构如何? 答:一主多从,主从同步,读写分离. 如上图: (1)一个主库提供写服务 (2)多个从库提供读服务 ...
- Spring注解之@RestControllerAdvice
前言 前段时间部门搭建新系统,需要出异常后统一接口的返回格式,于是用到了Spring的注解@RestControllerAdvice.现在把此注解的用法总结一下. 用法 首先定义返回对象Respons ...
- 平滑启动shell脚本
# 平滑关闭和启动 Spring Boot 程序#设置端口SERVER_PORT="8090"#当前时间time=`date +%Y-%m-%d`#设置应用名称JAR_NAME=& ...
- 致和我一样迷茫的Java程序员们
缘起 从事近7年Java开发之后,在2019年这个寒冷的冬天里,我终于迎来了人生中的第一次裁员. 啊,30岁之后的裁员真让人焦虑. 按照以往惯例,在面试心仪的公司之前,需要先面试一些不那么心仪的公司热 ...
- [TCP] TCP协议族的学习 and TCP协议
1.TCP协议族这个大家庭,每个协议在OSI5层模型中所处的位子 其中,网络层里的 ICMP = Internet Control Message Protocol,即因特网控制报文协议, IGMP ...