Description

奶牛们没钱了,正在找工作。农夫约翰知道后,希望奶牛们四处转转,碰碰运气。而且他还加了一条要求:一头牛在一个城市最多只能赚D(1 <= D <= 1,000)美元,然后它必须到另一座城市工作。当然,它可以在别处工作一阵后又回来原来的城市再最多赚D美元。而且这样往往返返的次数没有限制。 城市间有P (1 <= P <= 150)条单向路径连接,共有C(2 <= C <= 220)座城市,编号1..C. 贝希当前处在城市S (1 <= S <= C)。路径 i 从城市A_i 到城市B_i (1 <= A_i <= C; 1 <= B_i <= C),在路径上行走不用花任何费用。为了帮助贝希,约翰让它使用他的私人飞机服务。这项服务有F条(1 <= F <= 350)航线,每条航线是从城市J_i飞到另一座城市K_i (1 <=J_i <= C; 1 <= K_i <= C),费用是T_i (1 <= T_i <= 50,000)美元。如果贝希手中如果没有现钱,可以用以后赚的钱来付机票钱。贝希可以选择任何时候,在任何城市退休。如果在工作时间上不作限制,贝希总共可以赚多少钱呢? 如果赚的钱也不会出现限制,就输出-1。

Input

第1行: 5个空格分开的整数 D, P, C, F, S

第2..P+1行: 第 i+1行包含2个空格分开的整数,表示一条从A_i 到 B_i的单向路径

第P+2..P+F+1行: 第P+i 包含3个空格分开的整数,表示一条从J_i到K_i的单向航线,费用为T_i

Output

第1行: 在上述规则下的最多可赚的钱数。

Sample Input

100 3 5 2 1
1 5
2 3
1 4
5 2 150
2 5 120

Sample Output

250

HINT

样例说明:贝希可以从城市 1 到 5 再到 2 ,最后到 3, 总共赚 4*100 - 150 = 250 美元。

显然

为了拿个省一而开始刷水了。。
点有权值,边也有权值,所以应该考虑把点上的权值转到边上。
对于每条无费用边,把权值改成d,对每条有v费用边,权值改成d-v,显然最大路径权值和即是所求,有正环的时候就输出-1
有正环。。多别扭啊
所以把边权反过来,这样判负环即可
最后,因为会经过k个点k-1条边,所以点权要多算一次
这简直是无脑spfa。。
 
 #include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int head[];
int tot[];
int q[];
int dis[];
bool mrk[];
struct edge{int to,next,v;}e[];
int d,p,n,f,S,t=,w=,cnt;
inline void ins(int u,int v,int w)
{
e[++cnt].to=v;
e[cnt].next=head[u];
e[cnt].v=w;
head[u]=cnt;
}
inline bool spfa()
{
memset(q,,sizeof(q));
memset(mrk,,sizeof(mrk));
memset(dis,/,sizeof(dis));
dis[S]=-d;q[]=S;mrk[S]=;
t=;w=;
while (t<w)
{
int now=q[++t];
for(int i=head[now];i;i=e[i].next)
if (dis[e[i].to]>dis[now]+e[i].v)
{
dis[e[i].to]=dis[now]+e[i].v;
if (!mrk[e[i].to])
{
q[++w]=e[i].to;
mrk[e[i].to]=;
tot[e[i].to]++;
if (tot[e[i].to]>n)return ;
}
}
mrk[now]=;
}
return ;
}
int main()
{
scanf("%d%d%d%d%d",&d,&p,&n,&f,&S);
for (int i=;i<=p;i++)
{
int x,y;scanf("%d%d",&x,&y);
ins(x,y,-d);
}
for(int i=;i<=f;i++)
{
int x,y,z;scanf("%d%d%d",&x,&y,&z);
ins(x,y,z-d);
}
if (spfa())
{
printf("-1");
return ;
}
int mx=d;
for (int i=;i<=n;i++)
if (-dis[i]>mx)mx=-dis[i];
printf("%d\n",mx);
}

bzoj2019

bzoj2019 [Usaco2009 Nov]找工作的更多相关文章

  1. 【BZOJ】2019: [Usaco2009 Nov]找工作(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2019 spfa裸题.....将飞机场的费用变成负,然后spfa找正环就行了 #include < ...

  2. BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2019 题意: 奶牛们没钱了,正在找工作.农夫约翰知道后,希望奶牛们四处转转,碰碰运气. 而 ...

  3. 萝卜招聘网 http://www.it9s.com 可以发布免费下载简历求职 ,免费!免费!全部免费!找工作看过来 免费下载简历 !

    萝卜招聘网  http://www.it9s.com  可以发布免费下载简历求职 ,免费!免费!全部免费!找工作看过来 免费下载简历 !萝卜招聘网  http://www.it9s.com  可以发布 ...

  4. 关于Unity游戏开发方向找工作方面的一些个人看法

     这是个老生常谈,却又是谁绕不过去的话题,而对于每个人来说,所遇到的情况又不尽相同,别人的求职方式和路线不一定适合你,即使是背景很相似的两个人,有时候机遇也很重要. 我本人的工作经验只有一年,就业方式 ...

  5. IT应届生如何准备找工作?

    今天和一个弟弟吃饭,他明年年初即将计算机研究生毕业.谈论到怎么找工作,觉得自己会的不多,心里非常发虚.虽然我当年找工作也走了很多弯路,思路并不是很清晰.但是工作了这么多年,对企业需要什么样子的人还是有 ...

  6. GISer 应届生找工作历程(完结)

    有半个月没更博客了,前几天在学校准备这保研,因为没有时间复习高数自然就没有过.    也没啥的,我本来就不打算复习,就是看看运气咋样(哈哈).在昨天开始跑的招聘会,一天下来不同地方跑了三家挺累的,记录 ...

  7. 找工作ing

    找工作已经一个月多了,这一个月跑来跑去,挺累的,倒也不是身体有多累,关键是心累!作为一名控制工程专业的研究生,想找一份软件开发类的工作,没想到这么难!在起初的时候,觉得自己C++和JAVA都会,找哪个 ...

  8. 求职,找工作,平台大PK

    国内 猎聘网:www.lietou.com 拉钩网:Lagou.com 智联招聘:www.zhaopin.com 前程无忧:http://www.51job.com/ 中华英才网:chinahr.co ...

  9. 一个php小白找工作的历程

    一个php小白找工作的历程其实对新工作还是有点忐忑的,对于我这样一个有着特殊工作经历的来说更是如此.为了更好的迎接未来,不得不总结下过去.在经历一段时间的职业生涯探索期后,还是觉得自己更适合做程序员这 ...

随机推荐

  1. C primer plus 读书笔记第三章

    本章的标题是数据和C,主要内容是介绍数据类型中的整数类型和浮点数类型. 本章的第一段代码 #include <stdio.h> int main(void) { float weight; ...

  2. ios开发应用内实现多语言自由切换

    需求描述:应用内部有一按钮,点击切换语言(如中英文切换).说起来这个是好久以前做的一个功能点了,刚开始也是没有头绪,后来解决了发现很简单,把方法分享一下.1.原理.查看NSLocalizedStrin ...

  3. 使用CButtonColumn自定义CGridiew里面的按钮

    参考 http://www.yiiwiki.com/post/8 使用yii做的项目,编辑的时候,使用到的是自带的 CButtonColumn , 现在需要在编辑的时候跳新页面,这时只需要这样做就可以 ...

  4. python基础--杂项

    字符串格式化: ython的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...

  5. 仿写Windows7桌面和任务栏 HTML5+CSS3+Jquery实现

    过去一段时间零零散散的自学了一点点jquery的相关用法,基本上属于用到哪个了,就去查然后就学一点,没有系统的学过,深入的用法也不是特别了解,毕竟javascript基础就比较薄弱.经过一段时间的零敲 ...

  6. 定义Foo() 函数,弹出对话框提示当前选中的是第几个单选框

    function foo(){ var ele = document.getElementsByName("radioElement"); for(var i = 0;i<e ...

  7. PHP 类型比较表

    以下的表格显示了 PHP 类型和比较运算符在松散和严格比较时的作用.该补充材料还和类型戏法的相关章节内容有关.同时,大量的用户注释和 » BlueShoes 的工作也给该材料提供了帮助. 在使用这些表 ...

  8. JAVA-2-DATA

    import java.util.*; public class Ch0310 { public static void main(String[] args) { // TODO 自动生成的方法存根 ...

  9. CMD 下 进入 ORACLE

    .sqlplus /nolog .connect sys/orcl@ORCL as sysdba .select sysdate from dual exit;

  10. FileWriter

    package file; import java.io.File; import java.io.FileWriter; import java.io.IOException; public cla ...