将边排序后dp一下就可以了。

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define clr(x,c) memset(x,c,sizeof(x))
int read(){
int x=0;char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return x;
}
const int nmax=5e4+5;
const int inf=0x7f7f7f7f;
struct node{
int u,v,d;
node(int u,int v,int d):u(u),v(v),d(d){};
node(){};
bool operator<(const node&rhs)const{
return d<rhs.d;}
};
node ns[nmax];
void maxs(int &a,int b){
if(a<b) a=b;
}
int g[nmax],dp[nmax];
int main(){
int n=read(),m=read(),u,v,d;
rep(i,1,m) ns[i].u=read(),ns[i].v=read(),ns[i].d=read();
sort(ns+1,ns+m+1);
int last=0;
rep(i,1,m){
if(i==m||ns[i].d<ns[i+1].d){
rep(j,last+1,i) g[ns[j].u]=dp[ns[j].u],g[ns[j].v]=dp[ns[j].v];
rep(j,last+1,i){
maxs(dp[ns[j].u],g[ns[j].v]+1);
maxs(dp[ns[j].v],g[ns[j].u]+1);
}
last=i;
}
}
int ans=0;
rep(i,0,n-1) maxs(ans,dp[i]);
printf("%d\n",ans);
return 0;
}

  

题目来源: Codility
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
 收藏
 关注
一个无向图,可能有自环,有重边,每条边有一个边权。你可以从任何点出发,任何点结束,可以经过同一个点任意次。但是不能经过同一条边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
输出最长路径的长度。
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
Output示例
4

最新文章

  1. Excel应该这么玩——4、命名区域:搞定下拉框
  2. Innodb Read IO 相关参数源代码解析
  3. window自动切换ip的脚本
  4. JSON.stringify初识
  5. fetch VS AJAX
  6. CentOS 7 install LNMP
  7. Mysql主从复制的配置(双机互为主从)
  8. Android TextView(同时显示图片+文字)
  9. iOS开发经常使用宏定义
  10. java多线程2
  11. Python——封装
  12. 【原创 Hadoop&amp;Spark 动手实践 8】Spark 应用经验、调优与动手实践
  13. 【mysql】逗号分割字段的行列转换
  14. UVA 11134 Fabled Rooks(贪心的妙用+memset误用警示)
  15. Ionic 命令
  16. 用Rails.5.2+ Vue.js做 vue-todolist app
  17. Gunicorn+Flask中重复启动后台线程问题
  18. manjaro 下golang protobuf的使用
  19. [LeetCode 题解]: Remove Duplicates from Sorted List
  20. 进阶篇:3)面向制造的设计DFM

热门文章

  1. HDOJ 1398 Square Coins 母函数
  2. MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)
  3. flashdevelop 开发技巧
  4. HDU 4148 Length of S(n)(字符串)
  5. POJ 1491
  6. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 1(Lists)
  7. ubuntu安装hive
  8. .htaccess文件的作用(访问控制)
  9. hdu 2873 Bomb Game 博弈论
  10. m_pMainWnd(转载)