• 51nod1274 最长递增路径


    将边排序后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
    ",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
  • 相关阅读:
    MyBatis 自动关闭 session
    Sublime相关操作及配置
    CentOS yum换源并配置SSH
    SpringSecurity认证流程
    ES模块化的导入和导出
    Promise学习
    axios的使用
    SpringSecurity注解的使用
    Webpack笔记
    JAVA工具类
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5910719.html
Copyright © 2020-2023  润新知