一个无向图,可能有自环,有重边,每条边有一个边权。你可以从任何点出发,任何点结束,可以经过同一个点任意次。但是不能经过同一条边2次,并且你走过的路必须满足所有边的权值严格单调递增,求最长能经过多少条边。
 
 
以此图为例,最长的路径是:
3 -> 1 -> 2 -> 3 -> 2 或
3 -> 1 -> 2 -> 3 -> 4 长度为4。

Input第1行:2个数N, M,N为节点的数量,M为边的数量(1 <= N <= 50000, 0 <= M <= 50000)。节点编号为0 至 N - 1。 
第2 - M + 1行:每行3个数S, E, W,表示从顶点S到顶点E,有一条权值为W的边(0 <= S, E <= N - 1, 0 <= W <= 10^9)。Output输出最长路径的长度。Sample Input

6 8
0 1 4
1 2 3
1 3 2
2 3 5
3 4 6
4 5 6
5 0 8
3 2 7

Sample Output

4

题意:在图中找最长路径,边权递增。

思路:不能直接以点为状态,因为不知道最后一次的长度。所以以边为最后状态,但是为了表面方向,就把每条边拆成两条。所以我直接用存边的信息来表示表示状态。

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
const int maxn=;
int Laxt[maxn],Next[maxn],To[maxn],cost[maxn],cnt;
P lin[maxn]; int l[maxn],r[maxn],dis[maxn],ans;
void add(int u,int v,int c)
{
Next[++cnt]=Laxt[u];
Laxt[u]=cnt; To[cnt]=v;
cost[cnt]=c;
}
int main()
{
int N,M,u,v,c,i,j;
scanf("%d%d",&N,&M);
for(i=;i<=M;i++){
scanf("%d%d%d",&l[i],&r[i],&c);
add(l[i],r[i],c); add(r[i],l[i],c);
lin[i]=P(c,i);
}
sort(lin+,lin+M+);
for(i=;i<=cnt;i++) dis[i]=;
for(i=;i<=M;i++){
int Ln=lin[i].second,Ct=lin[i].first;
for(j=Laxt[l[Ln]];j;j=Next[j]){
if(cost[j]>Ct) {
dis[j]=max(dis[j],dis[*Ln]+);
ans=max(ans,dis[j]);
}
}
for(j=Laxt[r[Ln]];j;j=Next[j]){
if(cost[j]>Ct) {
dis[j]=max(dis[j],dis[*Ln-]+);
ans=max(ans,dis[j]);
}
} }
printf("%d\n",ans);
return ;
}
/*
2 4
0 1 1
1 0 2
0 1 3
1 0 4
*/

最新文章

  1. 网页3D引擎“Babylon.JS”入门教程翻译总结
  2. 在无修改权限的情况下修改文件hosts中的内容
  3. 浅谈ImageList
  4. SQL 基本语句
  5. 调用python 报R6034 错误
  6. Java基础——数组应用之字符串String类
  7. 网页html结构右侧栏固定,左侧自适应大小。
  8. void *p 类型,illegal indirection错误
  9. iOS开发--验证码
  10. 接口自动化:HttpClient + TestNG + Java(一) - 接口测试概述+自动化环境搭建
  11. zsh快捷键
  12. java 利用Future做超时任务处理
  13. Prime Test(POJ 1811)
  14. 用R语言实现对不平衡数据的四种处理方法
  15. Global Illumination
  16. Codeforces 782C. Andryusha and Colored Balloons 搜索
  17. Everything的简单使用
  18. 访问localhost文件下的testmysql.php文件报Not Found
  19. C#建WindowForm调用R可视化
  20. mysql的binlog查看

热门文章

  1. 解决mac osx下pip安装ipython权限的问题
  2. UITableViewCell -- 动画
  3. Android应用开发之所有动画使用详解
  4. 【Tensorflow】tf.argmax函数
  5. [c#菜鸟]lambda表达式
  6. 【Unity3D自学记录】Unity3D之自制小钟表
  7. Android Developer:Allocation Tracker演示
  8. 综合运用: C++11 多线程下生产者消费者模型详解(转)
  9. Android 非静态内部类导致内存泄漏原因深入剖析
  10. 微信热补丁 Tinker 的实践演进之路