P1807 最长路_NOI导刊2010提高(07)

Posted HWIM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1807 最长路_NOI导刊2010提高(07)相关的知识,希望对你有一定的参考价值。

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。

 

输入输出样例

输入样例#1:
2 1
1 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<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<queue>
 5 using namespace std;
 6 const int MAXN = 1510;
 7 
 8 struct Edge{
 9     int to,w,nxt;
10 }e[50100];
11 
12 int dis[MAXN];
13 int head[MAXN];
14 bool vis[MAXN];
15 queue<int>q;
16 int n,m,cnt;
17 
18 void add(int u,int v,int w)    //从u到v有一条长度是w的边 
19 {
20     ++cnt;
21     e[cnt].to = v;
22     e[cnt].w = w;
23     e[cnt].nxt = head[u];
24     head[u] = cnt;
25 }
26 
27 void spfa()
28 {
29     for (int i=1; i<=n; ++i) dis[i] = -1;
30     dis[1] = 0;
31     q.push(1);
32     vis[1] = true;
33     while (!q.empty())
34     {
35         int u = q.front();
36         q.pop();
37         for (int i=head[u]; i; i=e[i].nxt)
38         {
39             int v = e[i].to;
40             int w = e[i].w;
41             if (dis[v]<dis[u]+w)
42             {
43                 dis[v] = dis[u]+w;
44                 if (!vis[v])
45                 {
46                     q.push(v);
47                     vis[v] = true;
48                 }
49             }
50         }
51         vis[u] = false;
52     }
53 }
54 
55 int main()
56 {
57     scanf("%d%d",&n,&m);
58     for (int u,v,w,i=1; i<=m; ++i)
59     {
60         scanf("%d%d%d",&u,&v,&w);
61         add(u,v,w); 
62     }
63     spfa();
64     printf("%d",dis[n]);
65     return 0;
66 }

以上是关于P1807 最长路_NOI导刊2010提高(07)的主要内容,如果未能解决你的问题,请参考以下文章

P1807 最长路_NOI导刊2010提高(07)

P1807 最长路_NOI导刊2010提高(07)

P1807 最长路_NOI导刊2010提高(07)

最短路相关题目

黑匣子_NOI导刊2010提高(06)

P1799 数列_NOI导刊2010提高(06)