<题目链接>

题目大意:

给定一个有向图(图不一定连通),每个点都有点权(可能为负),让你求出从源点走向汇点的路径上的最大点权和。

解题分析:
想到拓扑排序就好做了,然后在拓扑的过程中进行简单的状态转移。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <queue>
using namespace std;
const int maxn = 1e5 + ,M = 1e6 + ;
int n , m;
std::vector<long long> g[maxn];
int ou[maxn],in[maxn];
long long dp[maxn],w[maxn]; struct Edge{ int to,nxt; }e[M]; int cnt,head[maxn];
inline void add(int u,int v){
e[cnt]=(Edge){ v,head[u] };head[u]=cnt++;
} void init(){
cnt = ;
memset(head,-,sizeof head);
memset(dp,-0x3f,sizeof dp);
memset(in,,sizeof in);
memset(ou,,sizeof ou);
} void topsort(){
queue<int> q;
for(int i = ;i <= n ;i ++){
if(!in[i]) {
q.push(i);
dp[i] = w[i];
}
} while(!q.empty()){
int now = q.front() ; q.pop();
for(int i = head[now]; ~i; i = e[i].nxt){
int v = e[i].to;
if(in[v] == ) continue;
in[v] --;
dp[v] = max(dp[v],dp[now] + w[v]);
if(!in[v]) q.push(v);
}
}
} int main(int argc, char const *argv[])
{
//int n , m;
while(~scanf("%d %d",&n,&m)){
init();
for(int i = ;i <= n; i ++) scanf("%lld",&w[i]);
for(int i = ;i <= m;i ++){
int u , v;
scanf("%d %d",&u,&v);
add(u,v);
ou[u] ++; in[v] ++;
}
topsort();
long long mx = -1e18;
for(int i= ;i <= n; i ++){
if(!ou[i]){
mx = max(mx,dp[i]);
}
}
printf("%lld\n", mx);
}
return ;
}

POJ 3249 Test for Job (拓扑排序+DP)的更多相关文章

  1. POJ 3249 Test for Job(拓扑排序+dp优化空间)

    Description Mr.Dog was fired by his company. In order to support his family, he must find a new job ...

  2. POJ 3249 拓扑排序+DP

    貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2333333.... Description: MR.DOG 在找工作的过程中 ...

  3. [NOIP2017]逛公园 最短路+拓扑排序+dp

    题目描述 给出一张 $n$ 个点 $m$ 条边的有向图,边权为非负整数.求满足路径长度小于等于 $1$ 到 $n$ 最短路 $+k$ 的 $1$ 到 $n$ 的路径条数模 $p$ ,如果有无数条则输出 ...

  4. 洛谷P3244 落忆枫音 [HNOI2015] 拓扑排序+dp

    正解:拓扑排序+dp 解题报告: 传送门 我好暴躁昂,,,怎么感觉HNOI每年总有那么几道题题面巨长啊,,,语文不好真是太心痛辣QAQ 所以还是要简述一下题意,,,就是说,本来是有一个DAG,然后后来 ...

  5. 【BZOJ-1194】潘多拉的盒子 拓扑排序 + DP

    1194: [HNOI2006]潘多拉的盒子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 456  Solved: 215[Submit][Stat ...

  6. 【BZOJ5109】[CodePlus 2017]大吉大利,晚上吃鸡! 最短路+拓扑排序+DP

    [BZOJ5109][CodePlus 2017]大吉大利,晚上吃鸡! Description 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏.在游戏 ...

  7. bzoj1093[ZJOI2007]最大半连通子图(tarjan+拓扑排序+dp)

    Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u ...

  8. 【bzoj4011】[HNOI2015]落忆枫音 容斥原理+拓扑排序+dp

    题目描述 给你一张 $n$ 个点 $m$ 条边的DAG,$1$ 号节点没有入边.再向这个DAG中加入边 $x\to y$ ,求形成的新图中以 $1$ 为根的外向树形图数目模 $10^9+7$ . 输入 ...

  9. 【bzoj1093】[ZJOI2007]最大半连通子图 Tarjan+拓扑排序+dp

    题目描述 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:对于u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径. ...

随机推荐

  1. unittest详解(三) 测试套件(TestSuite)

    在前面一章中示例了如何编写一个简单的测试,但有两个问题: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢? 一个测试文件,我们直接执行 ...

  2. JavaWeb-SpringBoot_使用MySQL数据库实现用户管理_demo

    使用Gradle编译项目 传送门 项目已托管到Github上 传送门 SpringBoot使用MySQL实现 实现功能:普通用户注册.普通用户登录.管理员通过edit-user页面和show-all- ...

  3. Redis Cluster in Ubuntu

    1. 首先,进到Redis-server 的位置,确认 Redis server 可以正常启动 2. 在 redis-5.0.3 目录下创建文件夹 redisCluster_Demo_byMe,并在  ...

  4. mysql 查询近三个月数据

    select * from t_user where time>DATE_SUB(CURDATE(), INTERVAL 1 WEEK) --一周 select * from t_user wh ...

  5. 迭代器(Iterator)的使用

    迭代器(Iterator)的使用 我这里主要讲一下聚合式迭代器(IteratorAggregate) 因为聚合式迭代器和ArrayIterator配合使用可以直接跳过Iterator需要实现的5个方法 ...

  6. IDEA超实用快捷键

    1.查看某个方法在哪里被调用了 Ctrl+G 2.从Controller跳过接口快速进入到实现类的方法: Ctrl+T 3.快速打开:Generate Alt+Insert 4.生成包裹代码: Ctr ...

  7. android 面试汇总<二>

    Animation Q:Android中有哪几种类型的动画? 技术点:动画类型 参考回答: 常见三类动画 View动画(View Animation)/补间动画(Tween animation):对V ...

  8. 字典的常见操作<二>

    <1>len() 测量字典中,键值对的个数 <2>keys 返回一个包含字典所有KEY的列表 <3>values 返回一个包含字典所有value的列表 <4& ...

  9. [Nova] Failed to get shared "write" lock Is another process using the image?

    目录 文章目录 目录 问题 解决 问题 [root@overcloud-compute-0 ~]# /usr/bin/python2 -m oslo_concurrency.prlimit --as= ...

  10. nginx报错:nginx: [emerg] unknown directive in /etc/nginx/conf.d/test.conf:4

    nginx报错:nginx: [emerg] unknown directive  in /etc/nginx/conf.d/test.conf:4 解决: 第四行出现了 tab 空格 , 换成正常的 ...