HDU 3249 Test for job (有向无环图上的最长路,DP)



解题思路:

求有向无环图上的最长路,简单的动态规划

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
#define LL long long
using namespace std;
const int MAXN = 100000 + 10;
const int MAXM = 1000000 + 10;
const LL INF = -1 * 20000 * 100000 - 10;
struct Edge
{
    int to, next;
}edge[MAXM];
int tot, head[MAXN];
LL w[MAXN];
LL dp[MAXN];
int out[MAXN], vis[MAXN];
int n, m;
void init()
{
    tot = 0;
    memset(head, -1, sizeof(head));
    memset(w, 0, sizeof(w));
    memset(dp, INF, sizeof(dp));
    memset(vis, 0, sizeof(vis));
    memset(out, 0, sizeof(out));
}
void addedge(int u, int v)
{
    edge[tot].to = v;
    edge[tot].next = head[u];
    head[u] = tot++;
}
int dfs(int u)
{
    //cout << u << endl;
    if(vis[u]) return dp[u];
    vis[u] = 1;
    for(int i=head[u];i!=-1;i=edge[i].next)
    {
        int v = edge[i].to;
        dp[u] = max(dp[u], (LL)dfs(v));
    }
    if(head[u] == -1) return dp[u] = w[u];
    else return dp[u] = (dp[u] + w[u]);
   // return dp[u];
}
int main()
{
    while(scanf("%d%d", &n, &m)!=EOF)
    {
        init();
        for(int i=1;i<=n;i++) scanf("%d", &w[i]);
        int u, v;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d", &u, &v);
            addedge(v, u);
            out[u]++;
        }
        LL ans = INF;
        //for(int i=1;i<=n;i++) cout << dp[i] << ' ';
        for(int i=1;i<=n;i++) if(!out[i])ans = max(ans, (LL)dfs(i));
        printf("%d\n", ans);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 17:19:25

HDU 3249 Test for job (有向无环图上的最长路,DP)的相关文章

15-1有向无环图中的最长路径

#ifndef LONG_PATH_H #define LONG_PATH_H #include<iostream> #include<string> #define MAX 65535 int graphPath_longest(int (*Graph)[5],int Length,int origin,int destin ); void printf_path(int origin,int destin); #endif #include"LongPath.h&qu

UVA10305 Ordering Tasks(有向无环图排序--toposort) Kahn算法

题目描述:https://vjudge.net/problem/UVA-10305 题目分析: 恨水的题目,只要学了toposort就会做的,大概意思是给你n个变量,m个不等关系表示a<b,问n个数可能的关系;不如举个例子例如n=3表示3个变量我们假如他们是a,b,c现在有两个关系a<b,a<c 那么输出有两种a<b<c或者a<c<b(题目要求输出任意一种); 题目大概就这个意思,那么我们怎么做呢,我们想一想如果把变量看成点,关系看成有向边,那么就得到一个图,这个

图的邻接表表示与无环图的拓扑排序

一.  图的最常用的表示方法是邻接矩阵和邻接表. 1,邻接矩阵 邻接矩阵其实就是一个二维数组,对于每条边<u,v>,我们就令A[u][v] = 1,如果图为有权图,我们也可以令A[u][v]等于该权,这么表示的优点是非常简单,但是它的空间需求很大,如果图是稠密的,邻接矩阵是合适的表示方法,如果图是稀疏的,那这种方法就太浪费空间了,下面给出图的邻接矩阵表示例子. 2 邻接表 邻接表是图的常用储存结构之一.邻接表由表头结点和表结点两部分组成,其中图中每个顶点均对应一个存储在数组中的表头结点.如下图

48. 蛤蟆的数据结构笔记之四十八的有向无环图的应用关键路径

48. 蛤蟆的数据结构笔记之四十八的有向无环图的应用关键路径 本篇名言:"富贵不淫贫贱乐 ,男儿到此是豪雄.-- 程颢" 这次来看下有向无环图的另一个应用关键路径. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47135061 1.  关键路径 与AOV-网相对应的是AOE-网(Activity On Edge)即边表示活动的网.AOE-网是一个带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表

javascript实现有向无环图中任意两点最短路径的dijistra算法

有向无环图 一个无环的有向图称做有向无环图(directed acycline praph).简称DAG 图.DAG 图是一类较有向树更一般的特殊有向图, dijistra算法 摘自 http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijk

有向无环图的最小路径覆盖 二分图模型解题

有向无环图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次). 最小路径覆盖就是找出最小的路径条数,使之成为原图的一个路径覆盖. 公式:最小路径覆盖=(原图)顶点数-对应的二分图的最大匹配数. 我们通过例题来解释如何把DAG转换为二分图模型. HDU1151Air Raid 题目大意:在一个城镇,有n个路口,和m条单向路,而且这些路不会形成环.现在要弄

PGM学习之六 从有向无环图(DAG)到贝叶斯网络(Bayesian Networks)

本文的目的是记录一些在学习贝叶斯网络(Bayesian Networks)过程中遇到的基本问题.主要包括有向无环图(DAG),I-Maps,分解(Factorization),有向分割(d-Separation),最小I-Maps(Minimal I-Maps)等.主要参考Nir Friedman的相关PPT. 1  概率分布(Probability Distributions) 令X1,...,Xn表示随机变量:令P是X1,...,Xn的联合分布(joint distribution).如果每

有向无环图

1804: 有向无环图 Time Limit: 5 Sec     Memory Limit: 128 Mb     Submitted: 751     Solved: 313 Description Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始.点 v 结束的路径). 为了方便,点用 1,2,…,n 编号. 设 count(x,y) 表示点 x 到点 y 不同的路径数量(规定 count(x,x)=0),Bobo 想知道 除以 (109+7) 的余

有向无环图的应用—AOV网 和 拓扑排序

有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林. 在工程计划和管理方面的应用 除最简单的情况之外,几乎所有的工程都可分为若干个称作“活动”的子工程,并且这些子工程之间通常受着一定条件的约束,例如:其中某些子工程必须在另一些子工 程完成之后才能开始.对整个工程和系统,人们关心的是两方面的问题: 一是工程能否顺利进行,即工程流程是否“合理”: 二是