zoukankan      html  css  js  c++  java
  • Codeforces 459E Pashmak and Graph(dp+贪婪)

    题目链接:Codeforces 459E Pashmak and Graph

    题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径。

    解题思路:将边依照权值排序,每次将同样权值的边同一时候增加,维护每一个点作为终止点的最大长度就可以。

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    const int maxn = 3 * 1e5+5;
    
    struct edge {
        int u, v, w;
    }s[maxn];
    
    bool cmp (const edge& a, const edge& b) {
        return a.w < b.w;
    }
    
    int n, m, d[maxn], f[maxn], val[maxn];
    
    int main () {
        scanf("%d%d", &n, &m);
        memset(d, 0, sizeof(d));
        memset(f, 0, sizeof(f));
        memset(val, 0, sizeof(val));
    
        for (int i = 0; i < m; i++)
            scanf("%d%d%d", &s[i].u, &s[i].v, &s[i].w);
        sort(s, s + m, cmp);
    
        for (int i = 0; i < m; i++) {
    
            int j;
            for (j = i; s[j].w == s[i].w && j < m; j++);
    
            for (int k = i; k < j; k++)
                d[s[k].v] = max(d[s[k].v], f[s[k].u] + 1);
            for (int k = i; k < j; k++)
                f[s[k].v] = d[s[k].v];
            i = j - 1;
        }
    
        int ans = 0;
        for (int i = 1; i <= n; i++)
            ans = max(ans, f[i]);
        printf("%d
    ", ans);
        return 0;
    }

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    苹果常识
    Xcode相关路径
    iOS10 Xcode8问题汇总
    摇一摇
    手机端在线预览文件
    生成纯色色块
    django--没有整理,笔记
    httprunnermanager环境搭建 -----转
    httprunner---->最最基础小白笔记
    Oracle 多表联合删除?--转
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4669958.html
Copyright © 2011-2022 走看看