博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1807 最长路_NOI导刊2010提高(07)
阅读量:6713 次
发布时间:2019-06-25

本文共 1108 字,大约阅读时间需要 3 分钟。

题目描述

设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。

 

输入输出样例

输入样例#1:
2 11 2 1
输出样例#1:
1

说明

20%的数据,n≤100,m≤1000

40%的数据,n≤1,000,m≤10000

100%的数据,n≤1,500,m≤50000,最长路径不大于10^9

 

裸SPFA

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int MAXN=500001; 8 struct node 9 {10 int u;11 int v;12 int w;13 int next;14 }edge[MAXN];15 int num=1;16 int head[MAXN];17 void add(int x,int y,int z)18 {19 edge[num].u=x;20 edge[num].v=y;21 edge[num].w=z;22 edge[num].next=head[x];23 head[x]=num++;24 }25 int dis[MAXN];26 int vis[MAXN];27 int n,m,s;28 void SPFA(int s)29 {30 dis[s]=0;31 vis[s]=1;32 queue
q;33 q.push(s);34 while(q.size()!=0)35 {36 int p=q.front();37 q.pop();38 vis[p]=0;39 for(int i=head[p];i!=-1;i=edge[i].next)40 {41 int to=edge[i].v;42 if(dis[to]

 

转载地址:http://oualo.baihongyu.com/

你可能感兴趣的文章
MySQL DML 整理
查看>>
GitHub上那些值得一试的JAVA开源库
查看>>
数据库被黑后留下的数据
查看>>
mongodb分片介绍—— 基于范围(数值型)的分片 或者 基于哈希的分片
查看>>
mac home/end/pageup/pageDown
查看>>
SpringMVC拦截器和过滤器
查看>>
python函数式编程
查看>>
chart 数据 图表插件
查看>>
MySQL 5.6.20-4 and Oracle Linux DTrace
查看>>
Python学习--15 日期和时间
查看>>
怎么理解impala(impala工作原理是什么)
查看>>
ES doc_values的来源,field data——就是doc->terms的正向索引啊,不过它是在查询阶段通过读取倒排索引loading segments放在内存而得到的?...
查看>>
关于Linux虚拟化技术KVM的科普 科普三(From OenHan)
查看>>
19:字符串移位包含问题
查看>>
怎么部署 .NET Core Web项目 到linux
查看>>
jQuery学习目录
查看>>
CURL详解
查看>>
OCILIB开源的C/C++ Oracle驱动
查看>>
Mybatis学习总结(九)——查询缓存
查看>>
H-ui前端框架
查看>>