POJ 3249 Test for Job (拓扑排序+DP)
<题目链接>
题目大意:
给定一个有向图(图不一定连通),每个点都有点权(可能为负),让你求出从源点走向汇点的路径上的最大点权和。
解题分析:
想到拓扑排序就好做了,然后在拓扑的过程中进行简单的状态转移。
#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)的更多相关文章
- 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 ...
- POJ 3249 拓扑排序+DP
貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2333333.... Description: MR.DOG 在找工作的过程中 ...
- [NOIP2017]逛公园 最短路+拓扑排序+dp
题目描述 给出一张 $n$ 个点 $m$ 条边的有向图,边权为非负整数.求满足路径长度小于等于 $1$ 到 $n$ 最短路 $+k$ 的 $1$ 到 $n$ 的路径条数模 $p$ ,如果有无数条则输出 ...
- 洛谷P3244 落忆枫音 [HNOI2015] 拓扑排序+dp
正解:拓扑排序+dp 解题报告: 传送门 我好暴躁昂,,,怎么感觉HNOI每年总有那么几道题题面巨长啊,,,语文不好真是太心痛辣QAQ 所以还是要简述一下题意,,,就是说,本来是有一个DAG,然后后来 ...
- 【BZOJ-1194】潘多拉的盒子 拓扑排序 + DP
1194: [HNOI2006]潘多拉的盒子 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 456 Solved: 215[Submit][Stat ...
- 【BZOJ5109】[CodePlus 2017]大吉大利,晚上吃鸡! 最短路+拓扑排序+DP
[BZOJ5109][CodePlus 2017]大吉大利,晚上吃鸡! Description 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏.在游戏 ...
- bzoj1093[ZJOI2007]最大半连通子图(tarjan+拓扑排序+dp)
Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u ...
- 【bzoj4011】[HNOI2015]落忆枫音 容斥原理+拓扑排序+dp
题目描述 给你一张 $n$ 个点 $m$ 条边的DAG,$1$ 号节点没有入边.再向这个DAG中加入边 $x\to y$ ,求形成的新图中以 $1$ 为根的外向树形图数目模 $10^9+7$ . 输入 ...
- 【bzoj1093】[ZJOI2007]最大半连通子图 Tarjan+拓扑排序+dp
题目描述 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:对于u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径. ...
随机推荐
- Java基础__Java中异常处理那些事
一.Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Thro ...
- linux下安装R第三方包forecast
ERROR: [root@localhost soft]# R CMD INSTALL curl_3.1.tar.gz WARNING: ignoring environment value of R ...
- div随窗口变化设置高度
window.onscroll = function () { sc(); }; window.onresize = function () { sc(); }; window.onload = fu ...
- XMLHttpRequest 对象属性参数参考
readyState:提供当前 HTML 的就绪状态. readyState可能返回的值: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()) ...
- 五一 DAY 7
五一 DAY 7 P1514 引水入城 P1311 选择客栈 题解: P1315 观光公交 题解: 设 wait i 为最晚到达的旅客 arrive i 为到达i 的时刻 arrive i =max ...
- idea报错及解决
<b>root project 'test2': Web Facets/Artifacts will not be configured properly</b>Details ...
- 继成极光推送SDk的实现
进入极光推送官网:https://www.jiguang.cn/push 注册,创建应用,申请APPKey等操作 代码实现: 确认android studio的 Project 根目录的主 gradl ...
- nodejs之express路由与动态路由
1.快速创建express项目步骤 /** * 1.cd 到项目里面 * 2.npm init --yes 创建package.json文件 * 3.安装express * npm install e ...
- OpenStack 虚拟机冷/热迁移的实现原理与代码分析
目录 文章目录 目录 前文列表 冷迁移代码分析(基于 Newton) Nova 冷迁移实现原理 热迁移代码分析 Nova 热迁移实现原理 向 libvirtd 发出 Live Migration 指令 ...
- rsync启动脚本
rsync启动脚本 01 #!/bin/bash www.ahlinux.com 02 # 03 # rsyncd This shell script takes care of star ...